读书人

TranslateTransform与ScaleTransform的

发布时间: 2012-02-24 16:30:38 作者: rapoo

TranslateTransform与ScaleTransform的顺序问题。
初学vb.net画图,用到坐标系转换。
代码如下:
Dim g As Graphics = PictureBox1.CreateGraphics
Dim pen As New Pen(Color.Red)
Dim Zoom As Double = 4
g.TranslateTransform(0, Zoom * 60)
g.ScaleTransform(Zoom, -Zoom)
g.DrawRectangle(pen, 0, 0, 90, 60)
g.DrawLine(pen, 0, 0, 30, 30)

请高手解释一下,为什么其中这两句换一下顺序就无法显示画图了?
g.TranslateTransform(0, Zoom * 60)
g.ScaleTransform(Zoom, -Zoom)


[解决办法]
对于绘图这一方面没研究,帮顶.
[解决办法]
可以参照下面此帖<让VB.NET绘图还原VB6的绘图思维方式>,相信一定能帮助到你。
该文章比较详细解决坐标系转换问题
http://topic.csdn.net/u/20111202/14/17ab141a-22e5-406e-b6a3-c6e513c6aa43.html
[解决办法]
变换顺序不同结果就不同
先平移后缩放,世界坐标原点对应的设备坐标是(0,240)
先缩放后平移,世界坐标原点对应的设备坐标就跑到(0,-960)去了
(这个很好理解吧,你已经y轴缩放-4了,所以你y轴平移1实际上是平移-4,平移240就实际平移了-960像素)
这样你画的东西“画到”了窗口可视范围外边,所以就看不见咯

这是简单,更复杂的情况就要上矩阵算了

读书人网 >VB Dotnet

热点推荐