Pen和Brush

本文介绍了Windows图形编程中如何获取和使用画笔与画刷。包括创建不同类型的画笔,设置画笔的虚线空隙颜色,绘制模式的选择,以及创建各种画刷的方法。同时,讲解了包围区域的填充方式和如何获取及删除对象句柄的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取画笔:

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));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值