在該隨筆中將介紹一些GDI的繪圖函數(shù),以加深您對于程序繪圖的認(rèn)識。
1、文字輸出 窗口畫面上的文字輸出比后面所要介紹的幾個繪圖函數(shù)還要重要,因?yàn)樵诔绦蛟O(shè)計時,可能有時需要在畫面上顯示一些數(shù)據(jù)和信息,以利于程序本身的追蹤與排錯。
范例ch2_2:根據(jù)鼠標(biāo)的移動,將光標(biāo)所在位置的坐標(biāo)值顯示在窗口中。
下載:
ch2_2(上傳到windows live空間,可能需要MSN賬號登陸)
說明:程序源代碼中有相關(guān)的注釋。
運(yùn)行結(jié)果如下圖:
2、多邊形函數(shù) 下表中給出了GDI函數(shù)中關(guān)于多邊形的繪圖函數(shù):
函數(shù)名稱
|
說明
|
Polygon
|
繪制封閉多邊形
|
PolyLine
|
繪制多邊線條
|
PolylineTo
|
以當(dāng)前畫筆所在位置繪制多邊線條
|
PolyPolygon
|
繪制多個封閉多邊形
|
PolyPolyline
|
繪制多個多邊線條
|
以上幾個函數(shù)的使用方法大同小異,以Polygon()函數(shù)來做說明。
BOOL Polygon(HDC hdc, CONST POINT 點(diǎn)數(shù)組指針, int 多邊形點(diǎn)數(shù)); //繪制多邊形
第2個參數(shù)輸入的是一個POINT結(jié)構(gòu)的數(shù)組指針,POINT可用于描述一個坐標(biāo)點(diǎn),其結(jié)構(gòu)如下:

typedef struct tagPOINT
{
LONG x; // X坐標(biāo)
LONG y; // Y坐標(biāo)
} POINT;
范例ch2_3:展示多邊形繪制函數(shù)的用法,并在窗口中繪制多邊形。
下載:
ch2_3(上傳到windows live空間,可能需要MSN賬號登陸)
說明:程序源代碼中有相關(guān)的注釋。
運(yùn)行結(jié)果如下圖:

3、封閉圖形函數(shù)
下邊再來討論一下封閉幾何圖形的繪制方法,“
畫筆與畫刷”隨筆中介紹了畫矩形的Rectangle()函數(shù),現(xiàn)在再來看看畫橢圓形的GDI函數(shù)。

BOOL Ellipse
( HDC hdc, //繪制橢圓形
int 外圍矩形左上點(diǎn)X坐標(biāo),
int 外圍矩形左上點(diǎn)Y坐標(biāo),
int 外圍矩形右下點(diǎn)X坐標(biāo),
int 外圍矩形右下點(diǎn)Y坐標(biāo));
上面的函數(shù)說明確定一個外圍矩形就可以產(chǎn)生橢圓形。
下面再來看看繪制圓角矩形的函數(shù)。

BOOL RoundRect
( HDC hdc, //繪制圓角矩形
int 外圍矩形左上點(diǎn)X坐標(biāo),
int 外圍矩形左上點(diǎn)Y坐標(biāo),
int 外圍矩形右下點(diǎn)X坐標(biāo),
int 外圍矩形右下點(diǎn)Y坐標(biāo)
int 圓角上橢圓長,
int 圓角上橢圓高);
在這個函數(shù)中,除了給定外圍矩形的坐標(biāo)外,還給定了圓角上橢圓的長與高,用來表示圓角的弧度。
最后來說明繪制扇形(Pie)與弓形(Chord)函數(shù),扇形與弓形都是橢圓的一部分。
扇形與弓形都有連接的起點(diǎn)與終點(diǎn),不同之處在于,扇形還會與橢圓的中心點(diǎn)相連接,而弓形則直接連接起點(diǎn)與終點(diǎn)。繪制扇形的函數(shù)為Pie(),繪制弓形的函數(shù)則為Chord(),兩者輸入的參數(shù)意義都相同,下面以Pie()函數(shù)為例來進(jìn)行說明。
BOOL Pie ( HDC hdc, //繪制扇形
int 外圍矩形左上點(diǎn)X坐標(biāo),
int 外圍矩形左上點(diǎn)Y坐標(biāo),
int 外圍矩形右下點(diǎn)X坐標(biāo),
int 外圍矩形右下點(diǎn)Y坐標(biāo),
int 起點(diǎn)X坐標(biāo),
int 起點(diǎn)Y坐標(biāo),
int 終點(diǎn)X坐標(biāo),
int 終點(diǎn)Y坐標(biāo));
范例ch2_4:顯示封閉圖形繪制函數(shù)的用法,并在窗口中繪制不同圖形。
下載:
ch2_4(上傳到windows live空間,可能需要MSN賬號登陸)
說明:程序源代碼中有相關(guān)的注釋。
運(yùn)行結(jié)果如下圖:
PS:如想獲得更多關(guān)于Visual C++游戲開發(fā)的內(nèi)容,可點(diǎn)擊隨筆
:《Visual C++游戲編程基礎(chǔ)》學(xué)習(xí)筆記——索引隨筆。