1. GDI呼叫函數
1) 取得或釋放設備內容函數
BeginPaint(), EndPaint();
GetDC(), ReleaseDC();
2) 取得有關設備內容信息的函數
GetTextMetrics()
3) 繪圖函數
TextOut()
4) 設定和取得設備內容參數函數
SetTextColor(), SetTextAlign();
5) 使用設備內容對象函數
CreatePen()
2. GDI基本圖形
1) 直線和曲線
2) 填入區域
3) 位圖
4) 文字
3. 保存設備內容
在某些情況下,您可能想改變某些設備內容的屬性,用改變後的屬性進行繪圖,然後恢復原來的設備內容。
要簡化這一過程可以通過調用SaveDC函數:
int nSavedDC;
SaveDC(HDC hdc);
在想要回到呼叫SaveDC前存在的設備內容時,可以呼叫:
RestoreDC(HDC hdc, int nSavedDC);
4. 邊界框函數
畫矩形
Rectangle(__in HDC hdc, __in int left, __in int top, __in int right, __in int bottom);
畫橢圓
Ellipse(__in HDC hdc, __in int left, __in int top, __in int right, __in int bottom);
畫圓角矩形
RoundRect(__in HDC hdc, __in int left, __in int top, __in int right, __in int bottom, __in int width, __in int height);
畫弧線
Arc(hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd);
畫弓形
Chord(hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd);
畫扇形
Pie(hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd) ;
5. 使用設備內容對象
我們可以建立的GDI對象有:邏輯畫筆,畫刷,位圖,區域,字體,和調色盤
1) 邏輯畫筆
使用windows現有畫筆
畫筆決定線顏色,寬度和畫筆樣式
畫筆樣式可以是: 實線, 點劃線, 或者虛線
內定設備內容中畫筆爲BLACK_PEN
Windows提供的三種畫筆: BLACK_PEN, WHITE_PEN, NULL_PEN
呼叫GetStockObject,可以獲得現有畫筆的句柄
HPEN = hPen;
hPen = (HPEN)GetStockObject(BLACK_PEN);
現在必須將畫筆選進設備內容
SelectObject(hdc, hPen);
或者: hPen = SelectObject(hdc, (HPEN)GetStockObject(WHITE_PEN));
2) 畫筆的建立,選擇和刪除
CreatePen或者CreatePenIndirect函數
HPEN hPen = CreatePen(__in int iStyle, __in int cWidth, __in COLORREF color);
iStyle: PS_SOLID;
PS_DASH;
PS_DOT;
PS_DASHDOT;
PS_DASHDOTDOT;
PS_NULL;
PS_INSIDEFRAME;
SelectObject(__in HDC hdc, __in HGDIOBJ h);
DeleteObject(__in HGDIOBJ ho);
注意: 一般在呼叫EndPaint之後使用DeleteObject,不要刪除設備內容正在使用的畫筆
DeleteObject (SelectObject (hdc, GetStockObject (BLACK_PEN)));
SelectObject函數返回上一次使用的畫筆句柄
SelectObject(hdc, CreatePen(iStyle, cWidth, color));
3) 畫刷:
Windows定義了六種畫刷:WHITE_BRUSH、LTGRAY_BRUSH、GRAY_BRUSH、DKGRAY_BRUSH、BLACK_BRUSH和NULL_BRUSH
HBRUSH hBrush;
hBrush = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
SelectObject (hdc, hBrush) ;
SelectObject (hdc, GetStockObject (NULL_PEN)) ;
hBrush = CreateSolidBrush(RGB(255, 0, 0)) // 創建單一顏色的畫刷
hBrush = CreateHatchBrush (iHatchStyle, crColor) ; // 創建帶圖案的畫刷