Matrix 構造体
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 を定義します。 この場合、行列はオフセット (OffsetX と OffsetY) とスキュー (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 つの列のメンバーのみを指定する必要があります。 ベクトルは、列ベクトルではなく行ベクトルとして表されることに注意してください。
マトリックスは行メジャー順を使用して格納され、次の構造を持ちます。
M11 | M12 | 0 |
M21 | M22 | 0 |
OffsetX | OffsetY | 1 |
最後の行である OffsetX および OffsetY のメンバーは、変換値を表します。
メソッドとプロパティでは、変換行列は通常、次のように 6 つのメンバーのみを含むベクターとして指定されます (M11、 M12、 M21、 M22、 OffsetX、 OffsetY)
Matrix 構造体を使用して個々のポイントを直接変換したり、MatrixTransform を使用してオブジェクトを変換したりできますが、Windows ランタイムには、マトリックスを直接操作せずにオブジェクトを変換できるクラスのセットも用意されています。
マトリックスのプロパティは、(1 つまたは複数の DoubleAnimation アニメーションまたは DoubleAnimationUsingKeyFrames として) アニメーション化できます。
Matrix は MatrixTransform.Matrix プロパティのプロパティ値です。 関連する型は、3 次元空間の変換行列に使用し、プロジェクションに使用できます。 「Matrix3D と Matrix3DProjection」を参照してください。
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 番目の列の値を取得または設定します。 |