Matrix クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
幾何学的な変換を表す 3 x 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
- 継承
- 実装
注釈
Matrix クラスは、幾何学的な変換を表す 3 x 3 のアフィン 行列をカプセル化します。
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 オペレーティング システムでのみサポートされています。 クロスプラットフォーム アプリでこの種類を使用すると、コンパイル時の警告と実行時の例外が発生します。 詳細については、「System.Drawing.Common が Windows でしかサポートされない」を参照してください。
複合変換
複合変換は一連の変換であり、一方の変換の後にもう一方が続きます。 次の一覧のマトリックスと変換について考えてみましょう。
| マトリックス | 変革 |
|---|---|
| マトリックス 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 を示しています。
複合変換の行列を個々の変換行列に乗算することによって形成できるということは、アフィン変換の任意のシーケンスを単一の 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 クラスの新しいインスタンスを ID マトリックスとして初期化します。 |
| Matrix(Matrix3x2) |
指定した Matrixを使用して |
| Matrix(Rectangle, Point[]) |
Matrix クラスの新しいインスタンスを、指定した四角形と点の配列によって定義されたジオメトリック変換に初期化します。 |
| Matrix(RectangleF, PointF[]) |
Matrix クラスの新しいインスタンスを、指定した四角形と点の配列によって定義されたジオメトリック変換に初期化します。 |
| Matrix(Single, Single, Single, Single, Single, Single) |
指定した要素を使用して、Matrix クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Elements |
この Matrixの要素を表す浮動小数点値の配列を取得します。 |
| IsIdentity |
この Matrix が ID マトリックスであるかどうかを示す値を取得します。 |
| 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, MatrixOrder) |
この Matrix を、 |
| Multiply(Matrix) | |
| Reset() |
この Matrix をリセットして、ID 行列の要素を取得します。 |
| Rotate(Single, MatrixOrder) |
この |
| Rotate(Single) |
この Matrix 原点を中心に、指定した角度で時計回りの回転の前に追加します。 |
| RotateAt(Single, PointF, MatrixOrder) |
指定した順序で、指定した点を中心に時計回りの回転をこの Matrix に適用します。 |
| RotateAt(Single, PointF) |
この Matrix に、 |
| Scale(Single, Single, MatrixOrder) |
指定した順序を使用して、指定したスケール ベクトル ( |
| Scale(Single, Single) |
この Matrix に、指定したスケール ベクターをスケール ベクターの前に置いて適用します。 |
| Shear(Single, Single, MatrixOrder) |
指定した順序で、指定したせん断ベクトルをこの Matrix に適用します。 |
| Shear(Single, Single) |
せん断変換を前にして、指定したせん断ベクトルをこの Matrix に適用します。 |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
| TransformPoints(Point[]) |
この Matrix で表されるジオメトリ変換を、指定した点の配列に適用します。 |
| TransformPoints(PointF[]) |
この Matrix で表されるジオメトリ変換を、指定した点の配列に適用します。 |
| TransformPoints(ReadOnlySpan<Point>) |
この Matrix で表されるジオメトリ変換を、指定した点の配列に適用します。 |
| TransformPoints(ReadOnlySpan<PointF>) |
この Matrix で表されるジオメトリ変換を、指定した点の配列に適用します。 |
| TransformVectors(Point[]) |
この Matrix のスケールおよび回転コンポーネントのみを、指定されたポイントの配列に適用します。 |
| TransformVectors(PointF[]) |
配列内の各ベクトルに行列を乗算します。 この行列の翻訳要素 (3 行目) は無視されます。 |
| TransformVectors(ReadOnlySpan<Point>) |
配列内の各ベクトルに行列を乗算します。 この行列の翻訳要素 (3 行目) は無視されます。 |
| TransformVectors(ReadOnlySpan<PointF>) |
配列内の各ベクトルに行列を乗算します。 この行列の翻訳要素 (3 行目) は無視されます。 |
| Translate(Single, Single, MatrixOrder) |
指定した順序で、指定した変換ベクトルをこの Matrix に適用します。 |
| Translate(Single, Single) |
この |
| VectorTransformPoints(Point[]) |
配列内の各ベクトルに行列を乗算します。 この行列の翻訳要素 (3 行目) は無視されます。 |
| VectorTransformPoints(ReadOnlySpan<Point>) |
配列内の各ベクトルに行列を乗算します。 この行列の翻訳要素 (3 行目) は無視されます。 |