17.9 座標變換
預設情況下,座標系的原點位於視圖地區的左上方,水平方向為x軸,豎直方向為y軸。但有時候我們需要改變座標軸的位置或方向,這時就需要座標變換。常用的座標變換有平移變換、旋轉變換和伸縮變換三種。
17.9.1 平移變換
作者:梁斌玉 摘自《叩響C#之門》,七月初出版出版
BeginnerClassroom@163.com
http://www.cnblogs.com/BeginnerClassroom
平移變換是指把座標系的原點由一個位置平移到另一個位置,我們可以通過Graphics 類的TranslateTransform()方法實現平移變換。
下面我們通過一個樣本來說明怎樣進行平移變換。
圖17-16 “座標變換”視窗
建立一個名為“Transform”的項目,然後按如下步驟添加控制項:
1.17-16所示,添加3個按鈕。
現在為“平移變換”按鈕添加事件處理常式。
試一試::平移變換
//平移變換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所示。
圖17-17 用平移變換法繪製矩形的視窗
之後我們通過下面的語句進行座標的平移變換,該語句把座標系向右平移了150像素,向下平移了120像素,使座標系的原點由A點平移到了B點(如虛線所示)。
g.TranslateTransform( 150 , 120 );
橫向位移量 縱向位移量
最後我們第二次繪製矩形,這時Graphics對象以新座標係為參照,所以矩形的左上方被畫在B點。
雖然兩次繪製的是同一個矩形redRectangle,但由於座標系發生了變化,矩形的實際位置不同。
一旦Graphics對象的座標系發生了變換,Graphics對象今後都會在新座標系中繪製圖形,要想恢複到預設的座標系,則需要用下面的語句清除變換。
g.ResetTransform();
執行ResetTransform()方法後,座標系恢複到預設狀態,Graphics對象回到預設座標系中繪圖。
作者:梁斌玉 摘自《叩響C#之門》,七月初出版出版
BeginnerClassroom@163.com
http://www.cnblogs.com/BeginnerClassroom