Pen和Brush

獲取畫筆:

hPen=GetStockObject(WHITE_PEN);

hPen=CreatePen(iPenStyle, iWidth, crColor);

hPen=CreatePenIndirct(&logpen);

 

虛線畫筆的中空隙顏色:

SetBkColor(hdc,crColor);

SetBkMode(hdc,iMode);

畫筆空隙背景有兩種Mode,OPAQUE(默認)和TRANSPARENT。OPAQUE即設置SetBkColor的crColor,TRANSPARENT……

 

繪圖模式:

SetROP2(hdc, iDrawMode);

有些麻煩,就是背景色與畫筆色的位運算方法

 

獲取畫刷:

hBrush=GetStockObject(GRAY_BRUSH);

hBrush=CreateSolidBrush(crColor);

hBrush=CreateHatchBrush(iHatchStyle, crColor);

crColor是陰影線條色,陰影間隙色由間隙背景模式和背景色決定。Mode同畫筆

CreatePatternBrush和CreateDIBPatternBrushPt可創建位圖畫刷

hBrush=CreateBrushIndirect(&logbrush);

此畫刷可用以上四種畫刷,參考結構體LOGBRUSH

 

包圍區域填充方式:

SetPolyFillMode(hdc, iMode);

iMode有ALTERNATE和WINDING兩種。ALTERNATE:從包圍區域向無窮遠引射線,只有當放射線穿過的線段數爲奇數時才填充該包圍區。WINDING:包圍區域都填充;例外,如果射線穿過的線段向一個方向的數量和另一個方向的數量相同則不填充。

 

獲取當前Pen或Brush句柄、邏輯值(LOGPEN和LOGBRUSH):

hPen=GetCurrentObject(hdc, OBJ_PEN);

hBrush=GetCurrentObject(hdc, OBJ_BRUSH);

GetObject(hPen, sizeof(LOGPEN), (LPVOID) &logpen);

GetObject(hBrush, sizeof(LOGBRUSH), (LPVOID) &logbrush);

 

刪除句柄:

Create的句柄都要刪除,但不能在DC還在使用該句柄的時候刪除。

DeleteObject(hPen); or DeleteObject(hBrush);

如果沒有保存句柄,可利用SelectObject(hdc, hPen/hBrush)返回上一個使用的句柄:

DeleteObject(Select(hdc, hPen/hBrush));


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章