希望做一SKype类似风格的界面,面临圆角矩形按钮的问题。
我思考了几种方法,有的可行,有的似乎达不到目的,故求教于诸位。1、以白色为窗体底色,按钮为矩形,贴矩形图。图的圆角矩形的颜色为深蓝色,角上颜色与底色同,这样看起来就是白色窗体上的圆角矩形按钮。
但是这样有一个问题,处于美化界面的需要,背景有可能按照公司的要求改为渐进色,这样的话就可能露馅了。2、据美工所说,PNG格式的图支持透明属性,我试用CXImage重载了CBitmapButton,但图案周围出现一个边框。
能否利用这种机制实现PNG图透明部分为透明呢?
版上所说的SetBkMode(TRANSPARENT)我也试过,但似乎只对Text有效。3、最终极的办法,将按钮写成圆角矩形形状的,再贴图。不知是否可行,有没有那位做过类似工作的可以针对上述想法提供些建议或经验。谢谢!
我思考了几种方法,有的可行,有的似乎达不到目的,故求教于诸位。1、以白色为窗体底色,按钮为矩形,贴矩形图。图的圆角矩形的颜色为深蓝色,角上颜色与底色同,这样看起来就是白色窗体上的圆角矩形按钮。
但是这样有一个问题,处于美化界面的需要,背景有可能按照公司的要求改为渐进色,这样的话就可能露馅了。2、据美工所说,PNG格式的图支持透明属性,我试用CXImage重载了CBitmapButton,但图案周围出现一个边框。
能否利用这种机制实现PNG图透明部分为透明呢?
版上所说的SetBkMode(TRANSPARENT)我也试过,但似乎只对Text有效。3、最终极的办法,将按钮写成圆角矩形形状的,再贴图。不知是否可行,有没有那位做过类似工作的可以针对上述想法提供些建议或经验。谢谢!
*=======*
**=====**假设上边是一个矩形图片,=代表按钮的颜色,*代表边角。在绘制按钮时用transparentBlt,把最后一个参数设置为*所代表的颜色即可
影射ONDrawITem消息在drawitem中绘制就可以
你可以做一个圆角按钮,按钮上不显示的颜色定义为统一的一种颜色,我常用RGB(255,255,0)
然后用cimage中的TransationBit属性绘制即可(把透明色设置为不显示的那种颜色)这样,就可以绘制按钮,而不用担心窗体背景问题。
?
**=====**
*=======*
**=====**假设上边是一个矩形图片,=代表按钮的颜色,*代表边角。在绘制按钮时用transparentBlt,把最后一个参数设置为*所代表的颜色即可
--------------
这个方法绘制的图象仍然是有角的,似乎不行
如果有边角不好处理,那么把画出来的东西做成Rgn,然后SetWindowRgn
?
回复人:jun_01(无名小卒) ( 五级(中级)) 信誉:100 2007-03-21 15:46:03 得分:0
?
**=====**
*=======*
**=====**假设上边是一个矩形图片,=代表按钮的颜色,*代表边角。在绘制按钮时用transparentBlt,把最后一个参数设置为*所代表的颜色即可
--------------
这个方法绘制的图象仍然是有角的,似乎不行
--------------------------------
transparentBlt的最后一个参数若设置为RGB(0,0,0)即白色,则是不行的
仍然有灰色的边角。
一个制作XP按钮的例子