グラフィックや図形を操作するときは、座標系が重要です。座標軸を回転させて、同じ原点を通る新しい軸を取得できます。 C#言語を使用したマトリックス、グローバル、ローカル、およびワールド変換を含む、次の変換について調べてみましょう。さらに、この記事を通じて次の変換について学びましょう。
- マトリックス、グローバル、ローカル、およびワールドの変換– C#APIのインストール
- C#を使用してプログラムでマトリックス変換を適用する
- C#を使用してプログラムでグローバル座標変換を適用する
- C#でプログラムによるローカル変換の設定
- C#を使用してプログラムでワールドトランスフォーメーションを適用する
マトリックス、グローバル、ローカル、およびワールドの変換– C#APIのインストール
Aspose.Drawing for .NET APIは、さまざまな描画オブジェクトの処理をサポートしています。 .NETベースのアプリケーションでグラフィックを簡単に作成、編集、変換、またはレンダリングできます。 新しいリリースセクションからDLLファイルをダウンロードするだけです。一方、次のインストールコマンドを使用して、NuGetから構成できます。
PM> Install-Package Aspose.Drawing
C#を使用してプログラムでマトリックス変換を適用する
Matrixクラスには、変換を表す3x3のアフィン行列があります。これを使用して、要件に応じて形状を回転、移動、または拡大縮小できます。次の手順は、行列変換を適用する方法を説明しています。
- ビットマップクラスオブジェクトをインスタンス化します
- シェイプを作成する
- 行列変換を適用する
以下のコードは、C#言語を使用してプログラムで行列変換を適用する方法を示しています。
// ビットマップクラスオブジェクトを初期化します
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
// Graphicsクラスオブジェクトを宣言する
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));
// Rectangleクラスオブジェクトを開始します
Rectangle originalRentangle = new Rectangle(300, 300, 300, 200);
TransformPath(graphics, originalRentangle, (matrix) => matrix.Rotate(15.0f));
TransformPath(graphics, originalRentangle, (matrix) => matrix.Translate(-250, -250));
TransformPath(graphics, originalRentangle, (matrix) => matrix.Scale(0.3f, 0.3f));
// 行列変換で出力画像を保存する
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\MatrixTransformations_out.png");
private static void TransformPath(Graphics graphics, Rectangle originalRentangle, Action<Matrix> transform)
{
GraphicsPath path = new GraphicsPath();
path.AddRectangle(originalRentangle);
Matrix matrix = new Matrix();
transform(matrix);
path.Transform(matrix);
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawPath(pen, path);
}
C#を使用してプログラムでグローバル座標変換を適用する
グローバル変換は、図面内のすべてのグラフィックオブジェクトを変換するために使用されます。グローバル座標変換を適用するには、以下の手順に従います。
- Bitmapクラスのインスタンスを初期化します
- グラフィックスクラスオブジェクトを宣言します
- 回転を設定する
- グローバルトランスフォーメーションで図形を描く
次のコードは、C#を使用してプログラムでグローバル座標変換を詳しく説明しています。
// ビットマップクラスオブジェクトを初期化します
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));
// すべての描画アイテムに適用される変換を設定します。
graphics.RotateTransform(15);
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawEllipse(pen, 300, 300, 400, 200);
// Glabal変換で出力画像を保存する
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\GlobalTransformation_out.png");
C#でプログラムによるローカル変換の設定
ローカル変換は、図面内の特定の形状またはグラフィックスに関連しています。それは、そのパスのアイテムのみが変換されるグラフィックパスの変換で説明できます。次の手順でローカル変換を設定できます。
- Bitmapクラスのオブジェクトを初期化します
- グラフィックスとGraphicsPathクラスオブジェクトを宣言します
- 形状を作成し、マトリックスを定義します
- Transformメソッドを呼び出す
以下のコードスニペットは、C#を使用してプログラムでローカル変換を設定する方法を説明しています。
// ビットマップクラスオブジェクトを初期化します
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));
GraphicsPath path = new GraphicsPath();
path.AddEllipse(300, 300, 400, 200);
// 描画する特定のパスに適用される変換を設定します。
Matrix matrix = new Matrix();
matrix.RotateAt(45, new Point(500, 400));
path.Transform(matrix);
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawPath(pen, path);
// ローカル変換で出力画像を保存する
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\LocalTransformation_out.png");
C#を使用してプログラムでワールドトランスフォーメーションを適用する
世界座標からページ座標への変換は、世界変換として知られています。このようなページ座標は、さまざまなデバイスでグラフィックをレンダリングするために使用されます。したがって、以下の手順でC#を使用してワールドトランスフォーメーションを適用できます。
- Bitmapクラスのオブジェクトを初期化します
- TranslateTransformメソッドを呼び出す
- 形を描く
次のコードは、C#言語を使用してプログラムでワールドトランスフォーメーションを適用する方法を示しています。
// ビットマップクラスオブジェクトを初期化します
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));
// 世界座標をページ座標にマッピングする変換を設定します。
graphics.TranslateTransform(500, 400);
Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawRectangle(pen, 0, 0, 300, 200);
// ワールドトランスフォーメーションで出力画像を保存する
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");
結論
一言で言えば、あなたはコンピュータのグラフィックスと形状に関連するさまざまな変換について学びました。 C#言語を使用して、グローバル、ローカル、およびワールドの変換の詳細を理解できる必要があります。さらに、詳細についてはAPIドキュメントを読むか、無料サポートフォーラムからご連絡ください。私たちはあなたを助けたいです!