分两种情况
第一种,图标的色深1~24位,这时候用另一张黑白图片(1位色)当作像素掩模。白色为显示而黑色为不显示。这类图标从dos版的win开始一直到现在的系统都支持。缺点就是斜线和圆弧的锯齿感现在的显示器上很严重。这在以前不是问题。因为以前的显示器都是CRT的,邻近的像素已模糊融合在一起,锯齿感不严重。另一个缺点就是没有半透明的部分。图标给人一种像剪纸卡片那样贴在背景上的感觉。
第二种,图标色深32位RGB模式。这时候也有另一张黑白图当作像素掩模。但是地位下降。如果程序装载的设备内容不支持alpha通道,则使用这个掩模处理图像与背景之间的叠加关系。否则只使用原彩色图,并将每个像素数据的最高8位当作alpha通道(低24位当作RGB数据,一起又称RGBA)。背景可透过图标部分形成半透明的效果。可以模拟玻璃、塑料等的效果(比如vista~win8系统的回收站图标)。还可以利用alpha通道模拟斜线和圆弧边缘的插值像素,使之看起来更平滑。

解决方案 »

  1.   

    win7的画图板(mspaint)能用来添加和编辑透明色么?
      

  2.   

    不行。而且不支持编辑图标。
    VS的图标编辑器也不行。
    用photoshop编辑吧,然后再用icon editor一类的工具转换成图标
    不要直接用vs的图标编辑器转换。不然会让半透明色变成完全不透明的。
      

  3.   

    图片数据里面分层, 有一个透明层(可选, 可以没有), 可以简单的想像透明层为一个遮光板, 遮光板的每个位置都有透光度, 也既透明层是与图片对应的, 每个点都有透光度(rgb数据), rgb差既显示出来的颜色
      

  4.   


    程序的icon在explorer里面是由系统控制的。你自己什么都做不了(改程序没用)。
    程序界面的图需要背景和前景图片的混合,而且客户区内容恢复/重绘的时候不能只绘制前景,而是必须先重新用背景覆盖掉,再把前景图片叠加上去。不然的话容易出现前景图片叠加了多次的样子。
    api的话,如果你用gdi绘图,不能用普通的bitblt/maskbit等贴前景图,而应该用AplhaBlend(目前似乎只有这一个函数可用),bmp图片需要用photoshop处理才行,不能用画图等工具。当然如果你嫌半透明混合麻烦而只用得到剪纸效果,最简单的方法是TransparentBlt,把图片需要透过的部分用这个函数指定的透明颜色参数填充。足够用了
      

  5.   

    bmp一般是用了指定的颜色来把需要透明的部分透明化的,绘制的时候可以用TransparentBlt方法绘制