【发布时间】:2014-03-29 15:58:13
【问题描述】:
我有一个形状,例如一个具有以下边界的矩形:
X = 100
Y = 100
Width = 100
Height = 100
我使用新的Matrix 对该矩形应用以下旋转:
X = 100
Y = 100
Angle = 45
var transform = new Matrix();
transform.RotateAt(angle, point);
所以新的矩阵有以下值:
0.7071068, 0.7071067, -0.7071067, 0.7071068, 150, -62.13202
我在用Graphic 绘制矩形时使用这个矩阵:
protected override void OnPaint(PaintEventArgs e)
{
...
e.Graphic.Transform = transform;
g.DrawRectangle(Pen, bounds.X, bounds.Y, bounds.Width, bounds.Height);
}
问题如下:在某个点我需要绘制相同的 Rectangle 但偏移了某个偏移量,例如 (50, 50)。我已经存储了矩阵变换和矩形边界。如果我只更改边界(添加偏移量),新的 Rectangle 将被绘制在错误的位置,可能是由于之前的旋转点。
我必须如何更改矩阵才能在“正确”位置绘制我的矩形?也就是说,我怎样才能找回正确的旋转点和旧的旋转角度?
【问题讨论】:
标签: c# winforms graphics matrix transform