最近发现我自己越来越喜欢把复杂的事情做简单了,架构师就是好,PNG图片的好处不用多说了,为了达到用户要求我想在C#项目中使用PNG,把PNG应用到任务栏,窗口栏图标当中去,但是C#好像是不提供直接使用的。于是说出想法,让代码组的人伤透脑筋,他们翻资料找微软技术网站,搜索网站,最后向我得出结论,C#里面使用PNG必须API,太不划算,要我再跟客户沟通下,我晕死?有这么复杂吗?我一看,网友解决问题的办法多了去了,什么文件流,重绘,API调用。后来我想起BMP实际上是可以透明的。又研究了下美工组做的PNG图标,都遵循了绘图标准。突发奇想,微软的老牌支持者是BMP,干脆全部按BMP格式办。
private void Form1_Load(object sender, EventArgs e)
{
System.Drawing.Bitmap bp=new Bitmap(@"1.ico");
Icon=Icon.FromHandle(bp.GetHicon());
}
实践证明我想法特别正确,这里是用ICO文件做测试,设置窗体图标,还可以设置任务栏图标,加上反射的代码还能动态设置应用程序图标,把ICO文件格式换成其他图片格式也能正常显示、我测试的时候使用了PNG、TIF、等,貌似支持市面上所有的图片格式文件。只要图片制作遵循标准就能保证是彩色透明的。我给代码组的人一看,全体汗颜。
多说句,后来闲的没事做,研究了卡巴斯基的图标,发现卡巴斯基任务栏图标就是PNG做的,而且图标的动画就是PNG图片的重叠显示和隐藏。我汗颜了……还有比我更省事的。