畫筆和畫刷都是GDI所定義的圖形對象,畫筆是線條的樣式,畫刷則是封閉圖形內(nèi)部填充的樣式。可以自定義繪圖所用畫筆及畫刷的樣式,系統(tǒng)預設(shè)畫筆的樣式為BLACK_PEN,畫刷的樣式為NULL_BRUSH。
要自定義畫筆或畫刷,可以使用下列3個API函數(shù)。
HPEN CreatePen(int 樣式, int 寬度, COLORREF 顏色); //建立畫筆
HBRUSH CreateHatchBrush(int 樣式, COLORREF顏色); //建立陰影畫刷
HBRUSH CreateSolidBrush(COLORREF 顏色); //建立單色畫刷
從上面的3個API函數(shù)可以看出,其返回值都是以英文字母“H”開頭,“H”在這里代表的就是前面所提過的“handle”(句柄)。
建立新畫筆與畫刷之后,必須在所要進行繪圖的DC中選用它們,才會產(chǎn)生預期的畫筆及畫刷效果,選用的函數(shù)如下:
HGDIOBJ SelectObject(HDC hdc, HGDIBJ GDI對象); //選用GDI對象
這個SelectObject()函數(shù)所輸入的第二個參數(shù)就是GDI對象的handle,而返回值則是前一次所使用的GDI對象。除了這一小節(jié)所介紹的畫筆,畫刷是屬于GDI對象外,其他的GDI對象還有:位圖、字體、區(qū)域及調(diào)色板。
GDI對象一經(jīng)建立便會占用部分內(nèi)存,一旦不使用的時候,務必將它們刪除,刪除函數(shù)如下:
BOOL DeleteObject(HGDIOBJ GDI對象); //刪除GDI對象
若刪除對象成功,則會返回布爾值“TRUE”,若失敗則返回“FALSE”。
范例ch2_1:建立7種系統(tǒng)所提供的畫筆即畫刷樣式,將結(jié)果繪制于窗口中
下載地址:
ch2_1(上傳到windows live空間,可能需要MSN賬號登陸)
說明:程序源代碼中有相關(guān)的注釋。
最后運行結(jié)果圖:
PS:如想獲得更多關(guān)于Visual C++游戲開發(fā)的內(nèi)容,可點擊隨筆
:《Visual C++游戲編程基礎(chǔ)》學習筆記——索引隨筆。