預設座標原點在視窗客戶區左上角,X 向右、Y 向下。常用轉換:
TranslateTransform(dx, dy)RotateTransform(angle)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); // 改色以便區分
}
轉換會永久影響 Graphics 物件後續繪圖。需恢復預設座標系時:
g.ResetTransform(); // 清除所有平移/旋轉/縮放
AutoScrollPosition 為位移量,使文件座標系隨捲動條移動 (見下一章)。Translate(center) → Rotate/Scale → Translate(-center)。平移轉換是「移動座標系」而非「移動物件」。掌握此反直觀思維,配合 ResetTransform 管理狀態,即可輕鬆實作捲動、縮放、以任意點為中心旋轉等進階繪圖需求。