【笨嘴拙舌WINDOWS】GDI绘制区域

摘要:
Gdi绘画操作使用白纸(窗口的工作区)和黑色字符(钢笔的颜色)!现在学习将白纸(GDI的绘图区域)更改为矩形!如果在这样的图像的垂直中心绘制一条四像素的黑线,它将显示以下效果:黑线由纸张分层为若干段,Winodws提供的绘图区域与上面提到的纸张相当!该区域的句柄可用于四个绘图函数FillRgn(hdc,

在默认情况下,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_DIFFhSrcRgn1不在黑hSrcRgn2中的部分
RGN_COPYhSrcRgn1的全部(忽略hSrcRgn2)

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

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

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

                                                                        (边框宽高由XFrame,yFrame)

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

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

免责声明:文章转载自《【笨嘴拙舌WINDOWS】GDI绘制区域》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇TCP的拥塞控制使用diskpart命令格式化U盘下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

wtl学习总结

在windows平台,相比MFC,我更喜欢WTL,因其简洁漂亮。所以陆续花了一年的时间学习之,这里总结一下(在学习Wtl/Atl之前,最好是对WinApi编程有一定的了解)。 安装         Wtl主页 http://sourceforge.net/projects/wtl/ ,整个库就是一堆.h文件,官方没有提供Installer,下载后解压到某...

【Python与机器学习】:利用Keras进行多类分类

多类分类问题本质上可以分解为多个二分类问题,而解决二分类问题的方法有很多。这里我们利用Keras机器学习框架中的ANN(artificial neural network)来解决多分类问题。这里我们采用的例子是著名的UCI Machine Learning Repository中的鸢尾花数据集(iris flower dataset)。 1. 编码输出便签...

在ThreadPool.QueueUserWorkIte 的回调函数中发生未处理异常导致了应用程序重启

用户登陆Session丢失,可能是因为应用程序发生错误而导致重启。这次遇到这情况是由于使用了ThreadPool.QueueUserWorkItem, 其中回调函数执行时发生未处理的异常,导致了ASP.NET 应用程序意外退出。参考:在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出(http://sup...

Amazon DynamoDB 全局表

Amazon DynamoDB 全局表 为部署多区域、多主机数据库提供了完全托管的解决方案,而不必构建和维护您自己的复制解决方案。在创建全局表时,指定要在其中提供表的 AWS 区域。DynamoDB 执行在这些区域中创建相同的表并将持续数据更改传播到所有这些表所必需的所有任务。 为说明全局表的一个使用案例,假设您有一个大型客户群跨越三个地理区域 — 美国东...

[转]如何定位Release程序崩溃原因

1       案例描述作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭。请与您的供应商联系。呵呵,这句微软的“名言”,恐怕是程序员最怕见也最常见的东西了。 在一个大型软件的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。...

浅析State-Thread

State-Thread(以下简称st),是一个由C语言编写的小巧、简洁却高效的开源协程库。这个库基于单线程运作、不强制占用用户线程,给予了开发者最大程度的轻量级和较低的侵入性。本篇文章中,网易云信音视频研发大神将为大家简要分析State-Thread,欢迎大家积极留言,和我们共同讨论。 在开始这个话题之前,我们先来聊一聊协程。 什么是协程? 协程是一种程...