• 【笨嘴拙舌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)                                           用当前画刷填充

  • 相关阅读:
    Linux下修改MySQL数据库字符编码为UTF-8解决中文乱码
    ODS与DW之间的关系
    如何使用Hive&R从Hadoop集群中提取数据进行分析
    CentOS6.5下实现R绘图
    Util.FSUtils: Waiting for dfs to exit safe mode
    Grafana邮件报警
    CentOS7安装Grafana(Yum)
    CentOS7安装Node_exporter(二进制)
    CentOS7安装Prometheus(二进制)
    linux查看进程内存占用
  • 原文地址:https://www.cnblogs.com/pavkoo/p/3302708.html
Copyright © 2020-2023  润新知