使用世界变换

世界转换是 Graphics 类的属性。 指定世界转换的数字存储在表示 3×3 矩阵的 Matrix 对象中。 MatrixGraphics 类具有几种用于设置世界转换矩阵中的数字的方法。

不同类型的转换

在以下示例中,代码首先创建一个 50×50 的矩形,并将其定位到原点 (0, 0)。 原点位于工作区的左上角。

Rectangle rect = new Rectangle(0, 0, 50, 50);
Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2);
e.Graphics.DrawRectangle(pen, rect);
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)

以下代码应用了缩放转换,它将矩形在 x 方向上放大 1.75 倍,在 y 方向上缩小二分之一:

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)

另请参阅