今天我们来欣赏一下用于填充图形的函数,当然我不会逐个去介绍,因为我们参考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之前就要调用SetDCBrus