任意形状图形按钮
一、 实现原理
我们知道 窗口默认都是矩形,要实现任意形状的窗口就需要自绘。为此从
派生一个按钮类 重载 消息处理进行自绘。图片的背景
是矩形的,假如我们的按钮图片是圆形的,当把图片绘制上去之后,我们发现多出了背景部分。
如何消除背景呢?
为了解决这个问题,我们可以用 中的 和 的方式进行绘制。
是把图形反色后再同贴图目的地进行 操作,而 是把图形和贴图目的
地进行 操作。在计算机中,使用的是数字图像处理,每一种颜色都是由 表示的,
是指红、绿、蓝三原色,只要有这 种颜色和对应的颜色强度就可以合成各种颜色了。比如黑色
的 值为 !!!",白色的 值为 #$$#$$#$$",括号内对应的是红绿蓝 种颜色的强
度。在数字图像处理中可以实现 、 等逻辑运算。任何颜色同白色进行 运算结果都为
白色,进行 运算结果都是该颜色本身;任何颜色跟黑色进行 运算结果都为该颜色本身;
进行 运算结果都是黑色。为此,我们准备两张图片,如下图所示:
图 %&&&&图 #
图 % 的背景为白色,图 # 是将图 % 中需要显示部分填充黑色而得。实现去除背景贴图关键代
码如下:
' ())"**值为真则去除图片背景
+
(,
(-./ .",
' 0(.))"**使用和主窗口相同的背景图片
+
.1..,
0(,
0(-./ .",
..)(-0/20 34(.",
0(-0/20 340(.",.5
6 !!0-78 "0-9:8 "30(0(0-'0(0-.;
",
<
.56 !!0-78 "0-9:8 "3(!!",
.56 !!0-78 "0-9:8 "3!!",
3(",
<
+
.56 !!0-78 "0-9:8 "3!!;",
<
- 1
- 2
- 3
前往页