您所在的位置: 下载吧  >  软件教程  >  编程开发 > 正文

图标文件格式之带透明通道的图标

  • 时间:2014-11-04 17:03
  • 来源:下载吧
  • 编辑:huashi

图标文件格式之带透明通道的图标

在Windows XP中引入了带8位透明通道的图标,而在这之前,只有一个称为mask的1位透明通道.
在ICO文件中带透明透明通道的图像很简单,因为ICO格式支持0RGB 32bpp的图像,那么只需要改成ARGB 32bpp就可以支持透明通道了.
当窗口管理器看到一个32bpp的图标,它会检查一遍透明通道,如果所检查的值都是0,则认为是0RGB格式,否则就认为是ARGB格式了,文件其他的部分保持不变.
三种常见的绘制带透明通道的图档的方法:
1.DrawIcon(DI_NORMAL): 最常见的调用,对于有透明通道的情况下,则将image和目的图像alpha混合.
2.DrawIcon(DI_IMAGE): 将图标中image部分覆盖到目标上.
3.DrawIcon(DI_MASK): 只绘制图标中的mask副本,并覆盖到目标上.
DI_IMAGE和DI_MASK选项让应用程序能够绘制图标中两个图像中的其中一个.这样应用程序可以更好的控制图标的绘制流程.
例如:他们可以通过mask给图标加一个阴影,mask表示图标的那部分是不透明的,需要产生阴影.
在Windows Vista之后引入了PNG格式图标,使用png格式之后可以舍去mask掩码这个数据了,图标的透明通道直接由png来提供的透明通道来提供,如此,图标格式反而变得简单一些了,只需要填写好ICONDIR和ICONDIRENTRY再加上png数据就可以了.

人气排行