WEB开发网
开发学院软件开发VC 图形界面上的任意形状图形按钮 阅读

图形界面上的任意形状图形按钮

 2008-12-24 19:39:50 来源:WEB开发网   
核心提示: 效果如下图所示:可能这时你就纳闷了,为什么背景色还是白色呢,图形界面上的任意形状图形按钮(2),是不是代码没有去掉图片的背景色呢?答案是贴图的时候已经去掉了背景色,请看分析按钮是一个子窗口,有关BitmapToRegion详情请看代码说明,我们用图2中的黑色区域去转化成区域,默认情况下主窗

效果如下图所示:

图形界面上的任意形状图形按钮

可能这时你就纳闷了,为什么背景色还是白色呢,是不是代码没有去掉图片的背景色呢?答案是贴图的时候已经去掉了背景色。请看分析

按钮是一个子窗口,默认情况下主窗口和按钮子窗口背景都是白色,但是往往我们需要在主窗口上绘制一张图片,这样窗口看起来就比较美观。这样子做之后,按钮子窗口和主窗口的背景就不一样了。在进行按钮自绘的时候,那就是把按钮背景作为目的地进行OR、AND运算,因为按钮背景就是白色的,所以效果看起来也就是白色的。

要解决这个问题也很简单,我们获取按钮所在主窗口中的矩形区域,把这个区域的主窗口背景绘制到按钮中,再进行绘制按钮图片的操作就可以了。

通过这样做之后,效果如下图:

图形界面上的任意形状图形按钮

为此,我们已经得到一个图片按钮了。但仅仅这样还不行,这按钮的响应区域还是矩形区域,也就是说除了按钮图片之外的区域也响应鼠标点击。那我们就需要构造一个按钮图片区域,使用库函数SetWindowRgn就可以确定响应区域了。SetWindowRgn有个参数为HRGN类型,因此我们需要获得一个HRGN。

Jean-Edouard Lachand-Robert 写了一个 BitmapToRegion 函数,函数的功能为把一张位图根据一种颜色转化为一个区域,这个我们就可以得到一个HRGN。有关BitmapToRegion详情请看代码说明。我们用图2中的黑色区域去转化成区域,为此我们就得了一个图片按钮的响应区域了。

Tags:图形 界面 任意

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接