使用世界变换

世界转换是 Graphics 类的一个属性。 指定世界转换的数字存储在 Matrix 对象中,该 对象 表示 3 ×3 矩阵。 MatrixGraphics 类有多种方法用于设置世界转换矩阵中的数字。 本节中的示例操作矩形,因为矩形易于绘制,并且很容易看到转换对矩形的影响。

首先创建一个 50 乘 50 的矩形,并将其定位在原点 (0, 0) 。 原点位于工作区的左上角。

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.DrawRectangle(&pen, rect);

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

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.ScaleTransform(1.75f, 0.5f);
graphics.DrawRectangle(&pen, rect);

结果得到了一个在 x 方向上比原来更长,在 y 方向上比原来更短的矩形。

若要旋转矩形而不是缩放矩形,请使用以下代码而不是前面的代码:

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.RotateTransform(28.0f);
graphics.DrawRectangle(&pen, rect);

若要平移矩形,请使用以下代码:

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.TranslateTransform(150.0f, 150.0f);
graphics.DrawRectangle(&pen, rect);