希望做一SKype类似风格的界面,面临圆角矩形按钮的问题。
我思考了几种方法,有的可行,有的似乎达不到目的,故求教于诸位。1、以白色为窗体底色,按钮为矩形,贴矩形图。图的圆角矩形的颜色为深蓝色,角上颜色与底色同,这样看起来就是白色窗体上的圆角矩形按钮。
    但是这样有一个问题,处于美化界面的需要,背景有可能按照公司的要求改为渐进色,这样的话就可能露馅了。2、据美工所说,PNG格式的图支持透明属性,我试用CXImage重载了CBitmapButton,但图案周围出现一个边框。
    能否利用这种机制实现PNG图透明部分为透明呢?
    版上所说的SetBkMode(TRANSPARENT)我也试过,但似乎只对Text有效。3、最终极的办法,将按钮写成圆角矩形形状的,再贴图。不知是否可行,有没有那位做过类似工作的可以针对上述想法提供些建议或经验。谢谢!

解决方案 »

  1.   

    **=====**
    *=======*
    **=====**假设上边是一个矩形图片,=代表按钮的颜色,*代表边角。在绘制按钮时用transparentBlt,把最后一个参数设置为*所代表的颜色即可
      

  2.   

    按钮设置为onwer draw为true
    影射ONDrawITem消息在drawitem中绘制就可以
    你可以做一个圆角按钮,按钮上不显示的颜色定义为统一的一种颜色,我常用RGB(255,255,0)
    然后用cimage中的TransationBit属性绘制即可(把透明色设置为不显示的那种颜色)这样,就可以绘制按钮,而不用担心窗体背景问题。
      

  3.   

    回复人:jun_01(无名小卒) ( 五级(中级)) 信誉:100  2007-03-21 15:46:03  得分:0

    **=====**
    *=======*
    **=====**假设上边是一个矩形图片,=代表按钮的颜色,*代表边角。在绘制按钮时用transparentBlt,把最后一个参数设置为*所代表的颜色即可
    --------------
    这个方法绘制的图象仍然是有角的,似乎不行
      

  4.   

    前面说的各种方法都可以,我再加一个:RoundRect
    如果有边角不好处理,那么把画出来的东西做成Rgn,然后SetWindowRgn
      

  5.   

    回复人:claider(沧海笑(立马巫山第一峰)) ( 二级(初级)) 信誉:100  2007-03-21 16:21:52  得分:0

    回复人:jun_01(无名小卒) ( 五级(中级)) 信誉:100 2007-03-21 15:46:03 得分:0
    ?
    **=====**
    *=======*
    **=====**假设上边是一个矩形图片,=代表按钮的颜色,*代表边角。在绘制按钮时用transparentBlt,把最后一个参数设置为*所代表的颜色即可
    --------------
    这个方法绘制的图象仍然是有角的,似乎不行
    --------------------------------
    transparentBlt的最后一个参数若设置为RGB(0,0,0)即白色,则是不行的
      

  6.   

    我一般用RGB(255,0,255)作为透明色,所以还真没注意到白色不能透明的问题。
      

  7.   

    用transparentBlt的方法,倘若Dialog贴图,也不行。
    仍然有灰色的边角。
      

  8.   

    http://www.codeproject.com/buttonctrl/CRoundButton2.asp
      

  9.   

    我记得以前腾讯QQ的图片也都是用transparentBlt来实现的,那么为什么它能够没有灰色的边角呢?
      

  10.   

    http://m2.tech.topzj.com/viewthread.php?tid=5162&extra=page%3D1
    一个制作XP按钮的例子