今天我們來欣賞一下用於填充圖形的函數,當然我不會逐個去介紹,因為我們參考MSDN直接套參數 就可以了。
SetDCBrushColor函數有必要扯一下,它的聲明如下:
COLORREF SetDCBrushColor( __in HDC hdc, __in COLORREF crColor );
第二個參數,通過RGB宏產生COLORREF傳進去就可以了,比如這樣:
SetDCBrushColor(ps.hdc,RGB(211,254,41));
但是,如果只是調用這個函數,你會發現 在繪圖的時候,畫刷的顏色還是沒有變化,因為我們還沒有將HBRUSH的預設畫刷DC_BRUSH選到DC中去。 所以,在調用SetDCBrushColor之前,要把預設的畫刷先放到裝置上下文,預設畫刷可以通過 GetStockObject(DC_BRUSH)獲得。
SelectObject(ps.hdc,GetStockObject(DC_BRUSH));
接下來我們可以嘗試填充幾個圖形試試,如矩形、橢圓、餅圖等。
case WM_PAINT: { BeginPaint(hwnd,&ps); SelectObject(ps.hdc,GetStockObject(DC_BRUSH)); SetDCBrushColor(ps.hdc,RGB(0,0,255)); Rectangle(ps.hdc,20,18,68,50); SetDCBrushColor(ps.hdc,RGB(220,32,70)); Rectangle(ps.hdc,125,100,230,300); SetDCBrushColor(ps.hdc,RGB(30,235,12)); Ellipse(ps.hdc,270,80,390,223); SetDCBrushColor(ps.hdc,RGB(35,160,242)); Chord(ps.hdc,185,260,420,480,190,260,405,479); SetDCBrushColor(ps.hdc,RGB(211,254,41)); Pie(ps.hdc,35,320,300,600,56,470,60,360); EndPaint(hwnd,&ps); } return 0;
每一次調用SetDCBrushColor都會改變畫刷的顏色,所以,比如你希望繪製藍 色的矩形,在調用Rectangle之前就要調用SetDCBrushColor修改畫刷顏色,然後再畫矩形。我們可以看 看上面代碼的最終效果。