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

MFC GDI 繪圖基礎:像素、畫筆與畫刷完整應用指南

     編輯:關於C語言

Windows GDI 繪圖核心在於「畫筆」勾勒輪廓、「畫刷」填充內部。本文系統介紹 `SetPixel`/`GetPixel` 像素操作、`CPen` 畫筆樣式與建立、`CBrush` 實體/斜紋畫刷建立,並列舉基本繪圖函數,助你掌握 MFC 繪圖基本功。

像素操作(慎用)

  • `COLORREF SetPixel(int x, int y, COLORREF crColor)`:設定像素顏色,回傳原顏色
  • `COLORREF GetPixel(int x, int y)`:取得像素顏色

效能警告:逐點繪圖極慢,大面積填充請改用畫刷或 `BitBlt`。

畫筆 CPen

建立:`BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor)`

樣式常數說明寬度限制
PS_SOLID實線任意
PS_DASH虛線僅 1
PS_DOT點線僅 1
PS_DASHDOT點劃線僅 1
PS_DASHDOTDOT雙點劃線僅 1
PS_NULL空筆(不畫)—
PS_ENDCAP_ROUND端點圓形—
PS_ENDCAP_SQUARE端點方形—

使用流程:建立 `CPen` → `dc.SelectObject(&pen)` 選入 DC → 繪圖 → `dc.SelectObject(oldPen)` 恢復。

畫刷 CBrush

建立方式:

  • `BOOL CreateSolidBrush(COLORREF crColor)`:純色畫刷
  • `BOOL CreateHatchBrush(int nIndex, COLORREF crColor)`:斜紋畫刷

斜紋樣式(`nIndex`):

  • HS_HORIZONTAL / HS_VERTICAL / HS_FDIAGONAL / HS_BDIAGONAL / HS_CROSS / HS_DIAGCROSS

系統繪製封閉圖形(`Ellipse`、`Rectangle`、`Polygon`、`RoundRect`、`Chord`、`Pie`)時,自動用當前畫刷填充內部。

基本繪圖函數速查

  • `MoveTo(x, y)` / `LineTo(x, y)`:直線
  • `Rectangle(x1, y1, x2, y2)`:矩形
  • `Ellipse(x1, y1, x2, y2)`:橢圓/圓
  • `RoundRect(x1, y1, x2, y2, x3, y3)`:圓角矩形
  • `Polygon(points, count)`:多邊形
  • `PolyLine(points, count)`:連續線段

資源管理鐵律

  1. GDI 物件(筆、刷、字型、位圖、區域)用完必須 `DeleteObject()` 或讓析構函數自動釋放
  2. 選入 DC 後,繪圖結束前務必 `SelectObject(oldObject)` 恢復原物件,否則導致 GDI 洩漏
  3. 堆疊建立的 `CPen`/`CBrush` 區域變數,離開作用域自動釋放,最安全
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved