ワールド変換の使用

更新 : 2007 年 11 月

ワールド変換は、Graphics クラスのプロパティです。ワールド変換を指定する数値は、3 × 3 の行列を表す Matrix オブジェクトに格納されます。Matrix クラスおよび Graphics クラスには、ワールド変換行列の数値を設定するためのメソッドがいくつかあります。

さまざまな変換

最初に 50 × 50 の四角形を作成し、その四角形を原点 (0, 0) に配置する例を次に示します。原点は、クライアント領域の左上隅の位置です。

Dim rect As New Rectangle(0, 0, 50, 50)
Dim pen As New Pen(Color.FromArgb(128, 200, 0, 200), 2)
e.Graphics.DrawRectangle(pen, rect)

Rectangle rect = new Rectangle(0, 0, 50, 50);
Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2);
e.Graphics.DrawRectangle(pen, rect);

スケーリング変換を適用し、四角形を x 方向に係数 1.75 で拡大し、y 方向に係数 0.5 で縮小するコードを次に示します。

e.Graphics.ScaleTransform(1.75F, 0.5F)
e.Graphics.DrawRectangle(pen, rect)

e.Graphics.ScaleTransform(1.75f, 0.5f);
e.Graphics.DrawRectangle(pen, rect); 

その結果、元の四角形よりも x 方向が長く、y 方向が短い四角形が作成されます。

この四角形をスケーリングせずに回転させる場合は、次のコードを使用します。

e.Graphics.ResetTransform()
e.Graphics.RotateTransform(28) ' 28 degrees
e.Graphics.DrawRectangle(pen, rect)

e.Graphics.ResetTransform();
e.Graphics.RotateTransform(28); // 28 degrees
e.Graphics.DrawRectangle(pen, rect);

この四角形を平行移動するには、次のコードを使用します。

e.Graphics.ResetTransform()
e.Graphics.TranslateTransform(150, 150)
e.Graphics.DrawRectangle(pen, rect)

e.Graphics.ResetTransform();
e.Graphics.TranslateTransform(150, 150);
e.Graphics.DrawRectangle(pen, rect);

参照

参照

Matrix

その他の技術情報

座標系と変換

マネージ GDI+ での変換の使用