我在网上找了一个PNG按钮的例子,例子中可以正常显示圆形的透明的PNG按钮.
但是我把它移植到我的程序里时,就出现了下面的问题:
1.圆形PNG按钮可以显示出来,但是四周没有透明.
2.例如2个PNG图片,一个上面写的是A,一个写的是B,当2个PNG图片来回切换的时候,这个按钮的图片上将会同时显示A和B.我的程序和示例程序的区别是:示例程序中PNG按钮是通过DDX_Control绑定的,而我的程序中PNG按钮是Create动态创建的.请问这个问题是不是背静没有被擦除引起的呢,我应该怎么修改呢?我以前在做BMP图的时候,做不规则按钮是先通过SetWindowRgn来设置按钮的区域,但是现在弄PNG图就不会了.请大家指点指点我

解决方案 »

  1.   

    我刚刚搜索了goodboyws(深夜不眠者(VCMVP))提供的一个方法,先把PNG转成BMP,然后利用BMP图来SetWindowRgn圆形区域,实现了把四个角的不透明解决了,但是背景还是有问题,请大家再指点指点。
      

  2.   

    BMP要用32位的,颜色就是ARGB的.
    xp下的theme,里面的dll中的资源都是这种格式的32位,通过gdi+,可以简单的绘画出半透明效果.
      

  3.   

    假设按钮是方形的,png图片是圆形的,并且方形比圆形的范围大,那么你不同的png图片在上面切换时是必须要擦除背景的。如果你不擦,以前绘制的图片会有残留;但是擦了也有问题,就是和按钮所属父窗口的重叠部分擦了以后颜色会不同,没法做到真正意义上的透明png按钮控件。
    所以你要么把按钮位置的父窗口相同位置图片截一块下来,把这个图片专门用来擦除背景,那么就不会有你所说的问题了。
      

  4.   

    尽量不要搞不一样边缘的按钮要不就要重绘背景色  fillrect 再贴
      

  5.   

    到www.codeproject.com看看,应该会有的