Matrix クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ジオメトリック変換を表現する 3 × 3 のアフィン行列をカプセル化します。 このクラスは継承できません。
public ref class Matrix sealed : MarshalByRefObject, IDisposable
public sealed class Matrix : MarshalByRefObject, IDisposable
type Matrix = class
inherit MarshalByRefObject
interface IDisposable
Public NotInheritable Class Matrix
Inherits MarshalByRefObject
Implements IDisposable
- 継承
- 実装
注釈
GDI+ では、アフィン変換を Matrix オブジェクトに格納できます。 アフィン変換を表す行列の 3 列目は常に (0, 0, 1) となるので、Matrix オブジェクトを構築する際には、最初の 2 列 に 6 つの数値のみを指定します。 ステートメント Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4)
は、次の図に示すマトリックスを構築します。
Note
.NET 6 以降のバージョンでは、この種類を含む System.Drawing.Common パッケージは Windows オペレーティング システムでのみサポートされています。 クロスプラットフォーム アプリでこの型を使用すると、コンパイル時の警告と実行時の例外が発生します。 詳細については、「 Windows でのみサポートされる System.Drawing.Common」を参照してください。
複合変換
複合変換とは、変換を順番に実行していく、変換のシーケンスのことです。 次の一覧に示す行列と変換について考えてみましょう。
行列 A | 90 度回転 |
行列 B | x 方向に 2 倍に拡大 |
行列 C | y 方向に 3 単位平行移動 |
行列 [2 1 1] で表される点 (2, 1) で始まり、A を乗算し、次に B、C を乗算すると、ポイント (2, 1) は一覧表示された順序で 3 つの変換を受けます。
[2 1 1]ABC = [-2 5 1]
複合変換の 3 つの部分を 3 つの独立した行列に格納する代わりに、A、B、C を乗算して、複合変換全体を格納した 1 つの 3×3 行列を取得することもできます。 ABC = D とした場合、点を D で乗算した結果は、A、B、C の順に乗算した結果と同じになります。
[2 1 1]D = [-2 5 1]
次の図は、A、B、C、D の行列を示したものです。
複合変換の行列は、個々の変換行列を乗算することで形成できます。つまり、1 つの Matrix オブジェクトには、アフィン変換の任意のシーケンスを格納することができます。
注意事項
複合変換では、順序が重要となります。 通常、回転、拡大縮小、平行移動という順序での操作は、スケーリング、回転、平行移動という順序での操作でと同じではありません。 同様に、行列の乗算においても順序が重要となります。 通常、ABC は BAC と同じではありません。
Matrix クラスには、複合変換を構築するためのメソッドがいくつか用意されています (Multiply、Rotate、RotateAt、Scale、Shear、および Translate)。 次の例では、最初に 30 度回転させた後、y 方向へ 2 倍に拡大し、x 方向に 5 単位平行移動する複合変換の行列を作成しています。
Matrix myMatrix = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);
Dim myMatrix As New Matrix()
myMatrix.Rotate(30)
myMatrix.Scale(1, 2, MatrixOrder.Append)
myMatrix.Translate(5, 0, MatrixOrder.Append)
コンストラクター
Matrix() |
Matrix クラスの新しいインスタンスを単位行列として初期化します。 |
Matrix(Matrix3x2) |
指定した を Matrix 利用して を構築します |
Matrix(Rectangle, Point[]) |
Matrix クラスの新しいインスタンスを初期化し、指定した四角形および点の配列で定義されたジオメトリック変換に設定します。 |
Matrix(RectangleF, PointF[]) |
Matrix クラスの新しいインスタンスを初期化し、指定した四角形および点の配列で定義されたジオメトリック変換に設定します。 |
Matrix(Single, Single, Single, Single, Single, Single) |
指定した要素を使用して、Matrix クラスの新しいインスタンスを初期化します。 |
プロパティ
Elements |
この Matrix の要素を表す浮動小数点値の配列を取得します。 |
IsIdentity |
この Matrix が単位行列かどうかを示す値を取得します。 |
IsInvertible |
この Matrix が反転できるかどうかを示す値を取得します。 |
MatrixElements |
マトリックスの要素を取得または設定します。 |
OffsetX |
この Matrix の x 方向の平行移動値 (dx 値、すなわち 3 番目の行の最初の列の要素) を取得します。 |
OffsetY |
この Matrix の y 方向の平行移動値 (dy 値、すなわち 3 番目の行の 2 番目の列の要素) を取得します。 |
メソッド
Clone() |
この Matrix の同一コピーを作成します。 |
CreateObjRef(Type) |
リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (継承元 MarshalByRefObject) |
Dispose() |
この Matrix によって使用されているすべてのリソースを解放します。 |
Equals(Object) | |
Finalize() |
オブジェクトが、ガベージ コレクションによって収集される前に、リソースの解放とその他のクリーンアップ操作の実行を試みることができるようにします。 |
GetHashCode() |
ハッシュ コードを返します。 |
GetLifetimeService() |
互換性のために残されています。
対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
InitializeLifetimeService() |
互換性のために残されています。
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
Invert() |
この Matrix が反転できる場合に反転します。 |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
Multiply(Matrix) |
指定した Matrix を前に付加することで、この Matrix と |
Multiply(Matrix, MatrixOrder) |
この Matrix と |
Reset() |
単位行列の要素を持つように対象の Matrix をリセットします。 |
Rotate(Single) |
原点を中心とする指定した角度の時計回りの回転を、この Matrix の前に付加します。 |
Rotate(Single, MatrixOrder) |
|
RotateAt(Single, PointF) |
回転を前に付加することで、 |
RotateAt(Single, PointF, MatrixOrder) |
指定した点を中心とする時計回りの回転を、指定した順序でこの Matrix に適用します。 |
Scale(Single, Single) |
スケール ベクターを前に付加することで、指定したスケール ベクターをこの Matrix に適用します。 |
Scale(Single, Single, MatrixOrder) |
指定した順序を使用して、指定したスケール ベクター ( |
Shear(Single, Single) |
傾斜変換を前に付加することで、指定した傾斜ベクターをこの Matrix に適用します。 |
Shear(Single, Single, MatrixOrder) |
指定した順序で、指定した傾斜ベクターをこの Matrix に適用します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
TransformPoints(Point[]) |
この Matrix が表すジオメトリック変換を、指定した点の配列に適用します。 |
TransformPoints(PointF[]) |
この Matrix が表すジオメトリック変換を、指定した点の配列に適用します。 |
TransformVectors(Point[]) |
この Matrix のスケールおよび回転の成分だけを、指定した点の配列に適用します。 |
TransformVectors(PointF[]) |
配列内の各ベクターを行列で乗算します。 この行列の平行移動要素 (3 番目の行) は無視されます。 |
Translate(Single, Single) |
平行移動ベクターを前に付加することで、指定した平行移動ベクター ( |
Translate(Single, Single, MatrixOrder) |
指定した順序で、指定した平行移動ベクターをこの Matrix に適用します。 |
VectorTransformPoints(Point[]) |
配列内の各ベクターを行列で乗算します。 この行列の平行移動要素 (3 番目の行) は無視されます。 |