使用世界变换

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

不同类型的变换

在下面的示例中,该代码先创建 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+ 中使用变换