关于GDI+世界坐标系变换的问题
程序1:e.Graphics.RotateTransform(30.0F, MatrixOrder.Append);
e.Graphics.DrawRectangle(new Pen(Color.Red, 3), 0, 0, 200, 80);
e.Graphics.TranslateTransform(100.0F, 0.0F, MatrixOrder.Append);
e.Graphics.DrawRectangle(new Pen(Color.Blue, 3), 0, 0, 200, 80);
}
运行结果:
程序2:
e.Graphics.RotateTransform(30.0F, MatrixOrder.Append);
e.Graphics.DrawRectangle(new Pen(Color.Red, 3), 0, 0, 200, 80);
e.Graphics.TranslateTransform(100.0F, 0.0F, MatrixOrder.Prepend);
e.Graphics.DrawRectangle(new Pen(Color.Blue, 3), 0, 0, 200, 80);
运行结果:
我个人觉得,程序1的运行结果和程序2的运行结果应该互换才OK,不知各位意下如何?
--------------------编程问答--------------------
Prepend 前一次操作
Append 后一次操作
e.Graphics.RotateTransform(30.0F, MatrixOrder.Append);
这个是之操作后
那就一个直接平移 一个是旋转30后平移~~
只是看不到你的结果
e.Graphics.RotateTransform(30.0F, MatrixOrder.Prepend);
不句反过来了?
--------------------编程问答-------------------- 谢谢啦,花了好长时间,这个问题终于弄明白了。
不论是Append还是Prepend,操作都是相对客户区左上角的世界坐标系而言的。
补充:.NET技术 , C#