当前位置:编程学习 > C#/ASP.NET >>

关于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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,