1、画笔
画笔的使用和上一章的字体类似,首先用CreatePen()函数创建一个画笔对象,然后与设备文本绑定,同时得到旧的画笔。用完后删除新画笔,并且恢复旧画笔。画笔的种类有7种,参照下表及下面的例子。
LineTo()函数从上一次画笔所在位置作为起点,一直画到LineTo()函数指定位置终止。如果要从指定位置画到另一指定位置这就需要用到MoveToEx()函数。MoveToEx()函数只移动画笔的位置,并不画线。
如:
HDC hdc;
HPEN hNewPen, hOldPen;
PAINTSTRUCT ps;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hNewPen = CreatePen (PS_SOLID,1,0x0000FF);
hOldPen = (HPEN)SelectObject(hdc, hNewPen);
MoveToEx(hdc, 10, 10, NULL);
LineTo(hdc, 200, 10);
DeleteObject(hNewPen);
EndPaint(hWnd, &ps);
break;
2、画刷
画刷的使用和画笔相同,创建画刷有两个函数,CreateHatchBrush()函数创建带图案的画刷,而CreateSolidBrush()函数不带图案。画刷图案主要有6种,而空画刷不需要创建。
例子:
HPEN hPen, hOldPen; //画笔
HBRUSH hBrush, hOldBrush; //画刷
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); //画笔
hOldPen = (HPEN)SelectObject(hdc, hPen);
hBrush = CreateHatchBrush(HS_CROSS, RGB(0, 255, 0)); //方格刷
hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
Rectangle (hdc, 10, 10, 210, 110); //画矩形
DeleteObject(hPen); //删除新笔
DeleteObject(hBrush); //删除新刷
EndPaint(hWnd, &ps);
break;