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)                                           用当前画刷填充

  • 相关阅读:
    操作系统的发展与分类
    kinect1在ros环境下跑orb_slam2
    ubuntu16.04如何设置局域网
    make编译时出现virtual memory exhausted: Cannot allocate memory
    ubuntu下载百度云文件
    ubuntu16.04安装teamviewer
    安装pangolin链接
    运行 roslaunch gazebo_ros empty_world.launch提示有错误,没有gzserver和gzclient
    Ubuntu16.04 安装有道词典
    [Qt插件]-02创建应用程序插件(插件化开发的一种思路)
  • 原文地址:https://www.cnblogs.com/pavkoo/p/3302708.html
Copyright © 2011-2022 走看看