zoukankan      html  css  js  c++  java
  • 【笨嘴拙舌WINDOWS】GDI绘制区域

    在默认情况下,Gdi绘画操作的使用白纸(窗口的客户区)黑字(Pen的颜色)!前面我们已经讲过如何改笔,现在来学习改变白纸(GDI的绘制区域)

    正常的纸为一个矩形形状!有时候小孩不小心撕掉纸的一角,不小心被纸中间掏空了,又或者纸被剪成了艺术品,比如:

    image

    如果在这样的图片上垂直方向的中央划一根4个像素的黑色的线条讲呈现出下面的效果

        image

    黑色的线条被纸分层了若干段,因为白色的部分不是纸!

    Winodws提供的绘制区域也就是相当于上面提到的纸!其中可用函数的的有

    hRgn = CreateRectRgn(xLeft,yTop.xRight,yBottom)       矩形区域

    hRgn = CreateRectRgnIndirect(&rect)                            同上

    hRgn = CreateEllipticRgn(xLeft,yTop.xRight,yBottom)    椭圆区域     

    hRgn = CreateEllipticRgnIndirect(&rect)                         同上

    hRgn = CreatePolygonRgn(&point,iCount,iPolyFillMode)多边形区域

    如果有多个区域,可以使用一个函数来合并

    CombinRgn(hDestRgn,hSrcRgn1,hSrcRgn2,iCombine)

    “将hSrcRgn1和hSrcRgn2使用iCombine方式合并为结果hDestRgn,iCombine可取值有:

    Icombine值 hDestRgn
    RGN_AND 两个区域的公共部分
    RGN_OR 两个区域的全部
    RGN_XOR 两个区域的全部除去公共部分
    RGN_DIFF hSrcRgn1不在黑hSrcRgn2中的部分
    RGN_COPY hSrcRgn1的全部(忽略hSrcRgn2)

    区域的句柄可用于4个绘图函数

    FillRgn(hdc,hRgn,hBrush)                                   用指定画刷填充

    FrameRgn(hdc,hRgn,hBrush,XFrame,yFrame)    用画刷填充边框

                                                                            (边框宽高由XFrame,yFrame)

    InvertRgn(hdc,hRgn)                                     将区域中的颜色像素反转

    PaintRgn(hdc,hRgn)                                           用当前画刷填充

  • 相关阅读:
    我的CISSP备考之路
    【CISSP备考笔记】第8章:软件开发安全
    【CISSP备考笔记】第7章:安全运营
    【CISSP备考笔记】第6章:安全评估与测试
    【CISSP备考笔记】第5章 身份与访问管理
    【CISSP备考笔记】第4章:通信与网络安全
    【CISSP备考笔记】第3章:安全工程
    【CISSP备考笔记】第2章:资产安全
    【CISSP备考笔记】第1章:安全与风险管理
    PHP后门隐藏技巧
  • 原文地址:https://www.cnblogs.com/pavkoo/p/3302708.html
Copyright © 2011-2022 走看看