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

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

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

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

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

最新文章

  1. Linux常用命令和Shell编程基础
  2. java集合类的学习(二)
  3. Gym 100703G---Game of numbers(DP)
  4. 如何写好一篇高质量的paper
  5. 关于block的一些理解
  6. C复数的四则运算
  7. DICOM:Ubuntu14环境下安装dcm4chee+oviyam2.1
  8. (三)NAND flash和NOR flash的区别详解
  9. (C#) 多线程修改布尔值, volatile
  10. 关于OPenGL和OSG的矩阵 (转)
  11. Filter和FilterChain具体的使用说明
  12. coder该何去何从
  13. Bukkit私人背包实现
  14. ArcGIS API for JavaScript经典例子
  15. Android TV开发 焦点控制
  16. c++程序时间统计
  17. 【洛谷P1828】香甜的黄油
  18. Objective-C:MRC(引用计数器)在OC内部的可变对象是适用的,不可变对象是不适用的(例如 NSString、NSArray等)
  19. webpack4.x最详细入门讲解
  20. 洛谷 P1115 最大子段和

热门文章

  1. linux yum 命令 详解
  2. 使用行为树(Behavior Tree)实现网游奖励掉落系统
  3. jQuery scroll事件
  4. LA 3350
  5. POJ 2075
  6. Spark基础与Java Api介绍
  7. 李洪强漫谈iOS开发[C语言-006]-程序的描述方式
  8. lintcode:Wiggle Sort
  9. LevelDB系列之整体架构
  10. libprotobuf ERROR