首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

叩響 C# 之門:GDI+ 平移轉換教學 — 座標系移動與繪圖實戰

     編輯:關於C#

座標轉換三部曲

預設座標原點在視窗客戶區左上角,X 向右、Y 向下。常用轉換:

  1. 平移 — TranslateTransform(dx, dy)
  2. 旋轉 — RotateTransform(angle)
  3. 縮放 — ScaleTransform(sx, sy)

平移轉換核心概念

g.TranslateTransform(150, 120) 將座標原點從 A(0,0) 移至 B(150,120)。後續所有繪圖指令以新原點為基準,但傳入的座標數值不變。

完整範例:同一矩形在兩座標系繪製


private void btnTranslate_Click(object sender, EventArgs e) {
    var rect = new Rectangle(0, 0, 120, 80); // 左上角 (0,0),寬 120、高 80
    var g = CreateGraphics();

    // 1. 原座標系繪製 (實線位置)
    g.FillRectangle(Brushes.Red, rect);

    // 2. 平移座標系:原點右移 150、下移 120
    g.TranslateTransform(150, 120);

    // 3. 新座標系繪製同一矩形 (虛線位置)
    g.FillRectangle(Brushes.Blue, rect); // 改色以便區分
}
座標變換示範視窗
圖 1. 「座標變換」視窗介面
平移前後矩形位置
圖 2. 平移轉換前後矩形相對位置
橫向偏移量 縱向偏移量
TranslateTransform 參數對應橫向/縱向偏移

重置轉換

轉換會永久影響 Graphics 物件後續繪圖。需恢復預設座標系時:


g.ResetTransform(); // 清除所有平移/旋轉/縮放

實戰應用場景

  • 捲動視窗繪圖: 以 AutoScrollPosition 為位移量,使文件座標系隨捲動條移動 (見下一章)。
  • 以中心點旋轉/縮放: Translate(center) → Rotate/Scale → Translate(-center)。
  • 邏輯座標映射螢幕座標: 遊戲/圖表座標系與像素座標系分離。

平移轉換是「移動座標系」而非「移動物件」。掌握此反直觀思維,配合 ResetTransform 管理狀態,即可輕鬆實作捲動、縮放、以任意點為中心旋轉等進階繪圖需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved