如题,如何将XP中Ico格式的文件转换为Png文件,并保留Alpha通道?

解决方案 »

  1.   

    ImageMagick 软件包转换后似乎也没有Alpha通道信息。和转换为Gif是一个效果
    有人熟悉 ImageMagick 么?有没有特殊的命令用于XP图标转换?
      

  2.   

    我也想用GDI+实现。如果是VB.net的话,似乎比较容易。有一个ICON类。但VB使用GDI+则需要“平面化”的API,但我没发现ICON类的相关函数
      

  3.   

    使用GDI+,不过你要声明一大堆的API,很麻烦
      

  4.   

    由于部署方面的限制,.net框架太庞大了,所以不能用。谁用GDI+处理过Icon,指教一下阿。.net的Icon类在GDI+中的平面API是什么啊?
      

  5.   

    VC++7.0/8.0是不是可以编译Win32程序呢?同是.net下的语言,使用GDI+会不会比较容易?可惜我不会VC,现学恐怕来不及了
      

  6.   

    www.mndsoft.com
    这里有一个GDI+的例子,其中有封装好的GDI+类,修改一下就可以用。
      

  7.   

    我给个老外写的封装好的GDI+ 库给你,是个Active X dll,里面已经把所有的API封装成.NET的形式,你直接引用调用即可:
    http://www.vbaccelerator.com/home/VB/Code/vbMedia/Using_GDI_Plus/GDIPlus_Helper/article.asp
      

  8.   

    在本人博客http://blog.csdn.net/tongyue/archive/2007/07/30/1716567.aspx中有关于ICO文件的说明,值得参考.
      

  9.   

    问一下:
    vb 中使用MMControl播音的时候,资源被占用了,其他程序模块都需要等待播音结束才运行,如何解决
      

  10.   

    1、用GDI+
    2、自己来完成,难度很大。因为必须非常清楚png的文件结构,还要搞定png的压缩。
    3、折中的方案,不知满足不满足你那边的要求,就是转换成bmp的,因为bmp也有带alpha通道的32位的,正好可以保留alpha通道,实现透明效果。注意的是,图标在文件内部其实包含两个位图,这两个位图混合实现透明。对于32位色以下的图标,因为不含alpha通道,其中一幅位图只起掩模的作用,就是说,对于一个像素来说,要不就完全显示(即alpha=255),要不就完全不显示(即alpha=0),只有32位的图标才可以显示出介于0到255之间的alpha透明效果。那么第3个方案就有思路了,一个图标文件,根据色深分别处理,32位的直接找出这个位图,直接保存为位图即可;其它的,先建立一个32位的DIB位图,把两幅位图里彩色绘制到场景上,然后根据另一幅掩模位图设置alpha即可。具体图标文件结构比较简单,google之即可。