WEB开发网
开发学院软件开发C语言 [叩响C#之门]写给初学者:平移变换 阅读

[叩响C#之门]写给初学者:平移变换

 2010-09-30 20:56:31 来源:WEB开发网   
核心提示:17.9 坐标变换 默认情况下,坐标系的原点位于视图区域的左上角,[叩响C#之门]写给初学者:平移变换,水平方向为x轴,竖直方向为y轴, g.ResetTransform(); 执行ResetTransform()方法后,坐标系恢复到默认状态,但有时候我们需要改变坐标轴的位置或方向,这时就需要坐标变换

17.9 坐标变换

默认情况下,坐标系的原点位于视图区域的左上角,水平方向为x轴,竖直方向为y轴。但有时候我们需要改变坐标轴的位置或方向,这时就需要坐标变换。常用的坐标变换有平移变换、旋转变换和伸缩变换三种。

17.9.1 平移变换

平移变换是指把坐标系的原点由一个位置平移到另一个位置,我们可以通过Graphics 类的TranslateTransform()方法实现平移变换。

下面我们通过一个示例来说明怎样进行平移变换。

[叩响C#之门]写给初学者:平移变换

图17-16 “坐标变换”窗口

新建一个名为“Transform”的项目,然后按如下步骤添加控件:

1.如图17-16所示,添加3个按钮。

现在为“平移变换”按钮添加事件处理程序。

[叩响C#之门]写给初学者:平移变换 试一试::平移变换

//平移变换 
private void translateTransformButton_Click(object sender, EventArgs e) 
{ 
  //将要绘制的矩形 
  Rectangle redRectangle = new Rectangle(new Point(0, 0), new Size(120, 80)); 
 
  //在原坐标系中绘制图形 
  Graphics g = CreateGraphics(); 
  g.FillRectangle(Brushes.Red, redRectangle); 
 
  //在新坐标系中绘制图形 
  g.TranslateTransform(150, 120); 
  g.FillRectangle(Brushes.Red, redRectangle); 
}

在上面的程序中我们两次绘制了矩形redRectangle,该矩形的左上角在坐标系的原点,宽度为120像素,高度为80像素。

第一次我们在默认坐标系中绘制矩形,这时坐标系的原点在窗口的左上角(如实线所示),Graphics对象以此为参照绘制出矩形,如图17-17所示。

[叩响C#之门]写给初学者:平移变换

图17-17 用平移变换法绘制矩形的窗口

之后我们通过下面的语句进行坐标的平移变换,该语句把坐标系向右平移了150像素,向下平移了120像素,使坐标系的原点由A点平移到了B点(如虚线所示)。

g.TranslateTransform( 150 , 120 );

                                       
 [叩响C#之门]写给初学者:平移变换 [叩响C#之门]写给初学者:平移变换

横向偏移量 纵向偏移量

最后我们第二次绘制矩形,这时Graphics对象以新坐标系为参照,所以矩形的左上角被画在B点。

虽然两次绘制的是同一个矩形redRectangle,但由于坐标系发生了变化,矩形的实际位置不同。

一旦Graphics对象的坐标系发生了变换,Graphics对象今后都会在新坐标系中绘制图形,要想恢复到默认的坐标系,则需要用下面的语句清除变换。

g.ResetTransform();

执行ResetTransform()方法后,坐标系恢复到默认状态,Graphics对象回到默认坐标系中绘图。

Tags:叩响 写给 初学者

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接