次の方法で共有


Matrix 構造体

定義

2 次元空間での変換に使用される 3 × 3 アフィン変換行列を表します。

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"/>
継承
Matrix
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

次の XAML の例では、四角形の図形に適用される MatrixTransform のデータを提供する Matrix を定義します。 この場合、行列はオフセット (OffsetXOffsetY) とスキュー (M12) を結合します。 この同じ効果は 、TranslateTransform と SkewTransform を組み合わせることによって生成された可能性があることに注意 してください。 1 つのマトリックスを使用するか、不連続変換の組み合わせを使用するかは、コーディング スタイルの問題です。結果は同じです。

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

注釈

3×3 行列は、2 次元 x-y 平面の変換に使用されます。 アフィン変換マトリックスでは、平行移動前の任意の数の線形変換 (回転やスキュー (せん断) など) を 1 つのマトリックスの乗算にまとめることができます。 アフィン変換行列の最終列は (0, 0, 1) であるため、最初の 2 つの列のメンバーのみを指定する必要があります。 ベクトルは、列ベクトルではなく行ベクトルとして表されることに注意してください。

マトリックスは行メジャー順を使用して格納され、次の構造を持ちます。

M11M120
M21M220
OffsetXOffsetY1

最後の行である OffsetX および OffsetY のメンバーは、変換値を表します。

メソッドとプロパティでは、変換行列は通常、次のように 6 つのメンバーのみを含むベクターとして指定されます (M11M12M21M22OffsetXOffsetY)

Matrix 構造体を使用して個々のポイントを直接変換したり、MatrixTransform を使用してオブジェクトを変換したりできますが、Windows ランタイムには、マトリックスを直接操作せずにオブジェクトを変換できるクラスのセットも用意されています。

マトリックスのプロパティは、(1 つまたは複数の DoubleAnimation アニメーションまたは DoubleAnimationUsingKeyFrames として) アニメーション化できます。

Matrix は MatrixTransform.Matrix プロパティのプロパティ値です。 関連する型は、3 次元空間の変換行列に使用し、プロジェクションに使用できます。 「Matrix3DMatrix3DProjection」を参照してください。

Matrix の言語プロジェクションとメンバー

Microsoft .NET 言語 (C# または Microsoft Visual Basic) を使用している場合、または Visual C++ コンポーネント拡張機能 (C++/CX) では、Matrix に使用できる非データ メンバーがあり、そのデータ メンバーはフィールドではなく読み取り/書き込みプロパティとして公開されます。

Windows ランタイム テンプレート ライブラリ (WRL) を使用して C++ を使用してプログラミングする場合、データ メンバー フィールドのみが Matrix のメンバーとして存在し、メンバー テーブルに一覧表示されているユーティリティ メソッドまたはプロパティを使用することはできません。 WRL コードは、 MatrixHelper クラスに存在する同様のユーティリティ メソッドにアクセスできます。

フィールド

M11

この Matrix 構造体の最初の行と最初の列の値。

M12

この Matrix 構造体の最初の行と 2 番目の列の値。

M21

この Matrix 構造体の 2 番目の行と最初の列の値。

M22

この Matrix 構造体の 2 番目の行と 2 番目の列の値。

OffsetX

この Matrix 構造体の 3 番目の行と最初の列の値を取得または設定します。

OffsetY

この Matrix 構造体の 3 番目の行と 2 番目の列の値を取得または設定します。

適用対象