Freigeben über


Matrix Struktur

Definition

Stellt eine 3 × 3 affine Transformationsmatrix dar, die für Transformationen im zweidimensionalen Raum verwendet wird.

public value class Matrix
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct Matrix
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Matrix
Public Structure Matrix
<Matrix .../>
- or -
<object property="m11,m12,m21,m22,offsetX,offsetY"/>
- or -
<object property="m11 m12 m21 m22 offsetX offsetY"/>
-or-
<object property="Identity"/>
Vererbung
Matrix
Attribute

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

In diesem XAML-Beispiel wird eine Matrix definiert, die Daten für eine MatrixTransform bereitstellt, die auf eine rechteckige Form angewendet wird. In diesem Fall kombiniert die Matrix einen Offset (OffsetX und OffsetY) und eine Neigung (M12). Beachten Sie, dass dieser Effekt durch die Kombination von TranslateTransform und SkewTransform erzeugt werden konnte. Ob eine einzelne Matrix oder Kombinationen diskreter Transformationen verwendet werden, ist eine Frage des Codierungsstils. die Ergebnisse sind identisch.

<Rectangle Width="100" Height="100" Fill="Red">
    <Rectangle.RenderTransform>
        <MatrixTransform Matrix="1,0,0,1,200,0">
        </MatrixTransform>
    </Rectangle.RenderTransform>
</Rectangle>

Hinweise

Eine 3×3-Matrix wird für Transformationen in einer zweidimensionalen x-y-Ebene verwendet. Affine Transformationsmatrizes können multipliziert werden und so eine Reihe linearer Transformationen ergeben, z. B. Drehen und Neigen (Scheren), gefolgt von Übersetzen. Eine affine Transformationsmatrix hat ihre letzte Spalte gleich (0, 0, 1), sodass nur die Elemente in den ersten beiden Spalten angegeben werden müssen. Beachten Sie, dass Vektoren als Zeilenvektoren und nicht als Spaltenvektoren ausgedrückt werden.

Eine Matrix wird mithilfe der Zeilen-Hauptreihenfolge gespeichert und weist die folgende Struktur auf:

M11M120
M21M220
OffsetXOffsetY1

Die Member in der letzten Zeile, OffsetX und OffsetY, stellen Übersetzungswerte dar.

In Methoden und Eigenschaften wird die Transformationsmatrix normalerweise als Vektor mit nur sechs Elementen angegeben: (M11, M12, M21, M22, OffsetX, OffsetY)

Obwohl Sie eine Matrix-Struktur direkt zum Übersetzen einzelner Punkte oder mit einer MatrixTransform verwenden können, um Objekte zu transformieren, stellt die Windows-Runtime auch eine Reihe von Klassen bereit, die Objekte transformieren können, ohne direkt mit Matrizen zu arbeiten:

Eigenschaften einer Matrix können animiert werden (als eine oder mehrere DoubleAnimation-Animationen oder DoubleAnimationUsingKeyFrames).

Matrix ist der Eigenschaftswert für die MatrixTransform.Matrix-Eigenschaft . Verwandte Typen können für Transformationsmatrizen im dreidimensionalen Raum verwendet und dann für eine Projektion verwendet werden. Siehe Matrix3D und Matrix3DProjection.

Sprachprojektionen und Elemente von Matrix

Wenn Sie eine Microsoft .NET-Sprache (C# oder Microsoft Visual Basic) oder in Visual C++-Komponentenerweiterungen (C++/CX) verwenden, stehen in Matrix keine Datenelemente zur Verfügung, und ihre Datenmember werden als Lese-/Schreibeigenschaften und nicht als Felder verfügbar gemacht.

Wenn Sie mit C++ mithilfe der Windows-Runtime Template Library (WRL) programmieren, sind nur die Datenmemberfelder als Member von Matrix vorhanden, und Sie können die hilfsprogrammbasierten Methoden oder Eigenschaften nicht verwenden, die in der Membertabelle aufgeführt sind. WRL-Code kann auf ähnliche Hilfsprogrammmethoden zugreifen, die für die MatrixHelper-Klasse vorhanden sind.

Felder

M11

Der Wert der ersten Zeile und ersten Spalte dieser Matrix-Struktur.

M12

Der Wert der ersten Zeile und zweiten Spalte dieser Matrixstruktur.

M21

Der Wert der zweiten Zeile und ersten Spalte dieser Matrixstruktur.

M22

Der Wert der zweiten Zeile und zweiten Spalte dieser Matrixstruktur.

OffsetX

Ruft den Wert der dritten Zeile und der ersten Spalte dieser Matrix-Struktur ab oder legt diesen fest.

OffsetY

Ruft den Wert der dritten Zeile und zweiten Spalte dieser Matrix-Struktur ab oder legt diesen fest.

Gilt für: