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

C# 圖形開發基石:GraphicsPath 路徑繪製與資源管理(第五講·下)

     編輯:關於C語言

GraphicsPath:矢量圖形的骨架

GraphicsPath 封裝了由直線、曲線組成的幾何路徑。本例中呼叫 AddEllipse(clientRect) 即在控件客戶區建立一個封閉橢圓路徑——客戶區即控件可繪製內部區域,若有邊框則小於控件尺寸,建議統一用 ClientSize 取得。

繪製順序決定視覺層次

// 正確順序:先填充,再描邊
using (SolidBrush b = new SolidBrush(backColor)) g.FillPath(b, path);
using (Pen p = new Pen(borderColor, 2)) g.DrawPath(p, path);

若先 DrawPath 再 FillPath,填充會覆蓋邊框導致邊框消失或變細。**圖形程式極度依賴繪製順序**,這也是除錯困難的主因——後繪製者勝出,需靜態審視代碼順序。

IDisposable 模式:非託管資源的及時釋放

SolidBrush、Pen、GraphicsPath 皆實作 IDisposable,內含非託管 GDI 物件。**務必以 using 區塊包裹**,確保離開作用域即釋放,避免 GDI 物件洩漏導致繪圖失效或程式崩潰。

動態視覺:懸停旗標驅動雙色系

引入 bolMouseHoverFlag,懸停時切換 HoverBackColor/HoverBorderColor,離開還原 ButtonBackColor/BorderColor,構成「亮一下」的即時回饋。

文字置中:StringFormat 掌控排版

using (StringFormat f = new StringFormat()) {
    f.Alignment = StringAlignment.Center;      // 水平置中
    f.LineAlignment = StringAlignment.Center;  // 垂直置中
    f.FormatFlags = StringFormatFlags.NoWrap;  // 單行不換行
    g.DrawString(caption, font, brush, clientRect, f);
}

DrawString 參數依序為:文字、字型、畫刷、版面矩形、格式物件。

從靜態到動態:工具箱驗證與下一步

編譯後在設計工具工具箱即可看到 EllipseButton,拖放到表單、設定文字、執行——此時按鈕如靜態圖片般毫無生機。**下一節將注入滑鼠事件,賦予它「生命」**。

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