首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

TranslateTransform与ScaleTransform的顺序有关问题

2012-02-24 
TranslateTransform与ScaleTransform的顺序问题。初学vb.net画图,用到坐标系转换。代码如下:Dim g As Graphi

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像素)
这样你画的东西“画到”了窗口可视范围外边,所以就看不见咯

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

热点排行