4.04 GDI绘图对象
画笔
(画笔是 GDI 绘图对象一种)
● 画笔的作用
线的颜色、线型、线粗
HPEN - 画笔句柄
● 画笔的使用
(1) 创建画笔
HPEN CreatePen(
int fnPenStyle, //画笔的样式
int nWidth.//画笔的粗细
COLORREF crColor //画笔的颜色
);创建成功返回句柄
如果样式为 PSSOILD-实心线,可以支持多个像素宽. 其他线型只能是一个像素宽
(2) 将画笔应用到 DC 中
HGDIOBJ SelectObject(
HDC hdc,//绘图设备句柄
HGDIOBJ hqdiobi //GDI绘图对象句柄,画笔句柄(HPEN也是HGD对象,因此可以直接使用)
);返回原来的GDI绘图对象句柄
注意: 请保存原来 DC 的画笔
(3) 绘图
(4) 取出 DC 中的画笔
将原来的画笔,使用 SelectObject 函数,放入到设备 DC 中,就会将我们创建的画笔取出.
(5) 释放画笔
BOOL DeleteObject(
HGDIOBJ hObject //GDI绘图对象句柄,画笔句柄
);
只能删除不被 DC 使用的画笔,所以在释放前,必须将画笔从 DC 中取出
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0));
HGDIOBJ nOldPen = SelectObject(hdc, hPen);
Ellipse(hdc, 100, 100, 300, 300);
DeleteObject(hPen);
SelectObject(hdc, nOldPen);
画刷
系统默认是白色画刷
● 画刷相关
画刷-封闭图形填充颜色、图案
HBRUSH-画刷句柄
● 画刷的使用
1)创建画刷
CreateSolidBrush- 创建实心画刷
CreateHatchBrush- 创建纹理画刷
2)将画刷应用到 DC 中
SelectObject
3)绘图
4)将画刷从 DC 中取出
SelectObject
5)删除画刷
DeleteObject
HBRUSH hBrush = CreateSolidBrush(RGB(255, 255, 0));
HGDIOBJ nOldBrush = SelectObject(hdc, hBrush);
...
其他
可以使用 GetStockObject 函数获取系统维护的画刷、画笔等
如果不使用画刷填充, 需要使用 NULL_BRUSH 参数, 获取透明画刷
GetStockObject 返回的画刷不需要删除