画笔和画刷

在使用画笔和画刷等GDI(Graphics Device Interface)对象时,应该遵守以下三条规则:

        1. 最后要删除自己建立的所有GDI对象;

        2. 当GDI对象正在一个有效的设备内容中使用时,不要删除它;

        3. 不要删除现有对象。


画笔和画刷都是通过句柄来进行使用的

       画笔:HPEN

       画刷:HBRUSH


定义画笔和画刷

       画笔:HPEN hPen;

       画刷:HBRUSH hBrush;


Windows提供的现有画笔和画刷

        画笔:WHITE_PEN、BLACK_PEN、NULL_PEN(什么都不画)

        画刷:WHITE_BRUSH、BLACK_BRUSH、NULL_BRUSH、

                   LTGRAY_BRUSH、GRAY_BRUSH、DKGRAY_BRUSH


使用现有画笔和画刷

        画笔:

                  HPEN hPen;

                  hPen = GetStockObject (WHITE_PEN);

                  SelectObject (hdc, hPen);

                  // 使用该画笔

                  DeleteObject (hPen);  (如果在WM_PAINT中,这句话一般放在EndPaint之后)

         画刷:

                  HBRUSH hBrush;

                  hBrush = GetStockObject (LTGRRAY_BRUSH);

                  SelectObject (hdc, hBrush);

                  // 使用该画刷

                  DeleteObject (hBrush); 


建立逻辑画笔和逻辑画刷

        画笔:

                 HPEN hPen;

                 hPen = CreatePen (iPenStyle, iWidth, crColor);

                 iPenStyle:

                                  

                                  PS_SOLID (实线);PS_DASH (虚线);PS_DOT(点虚线);PS_DASHDOT(点画线);

                                  PS_DASHDOTDOT(双点画线);PS_NULL;PS_INSIDEFRAME

        画刷:

                 HBRUSH hBrush;

                 hBrush = CreateSolidBrush (crColor); (实色画刷)

                 hBrush = CreateHatchBrush (iHatchStyle, crColor);

                 iHatchStyle:

                                   HS_HORIZONTAL; HS_VERTICAL; HS_FDIFGONAL; 

                                   HS_BDIAGONAL; HS_CROSS; HS_DIAGCROSS


取得画笔和画刷的信息

        画笔:GetObject (hPen, sizeof (LOGPEN), (LPVOID) &logpen);

        画刷:GetObject (hBrush, sizeof (LOGBRUSH), (LPVOID) &logbrush);


填入空隙

        画笔和画刷(针对HatchBrush):

                SetBkColor (hdc, crColor);

                SetBkMode (hdc, TRANSPARENT / OPQUE);

                TRANSPARENT:忽略背景色

                OPQUE:默认为它,不忽略背景色


PS:

         hPen = SelectObject (hdc, GetStockObject (WHITE_PEN));

         注意:该hPen为BLACK_PEN;也就是SelectObject函数返回值是之前的画笔句柄;返回的是之前值,非当前值。

                            


                 




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值