如果将PNG图像添加到ImageList控件并在Windows窗体(.Net 2.)应用程序中将该ImageList与ListView或TreeView一起使用,则ListView中显示的图标周围会出现蓝色"光晕".
例如:
替代文字http://deeperdesign.wordpress.com/files/2009/03/blue-halo.png
有没有人知道一个工作,允许你添加带有Alpha通道的32位PNG到ImageList并保留透明像素,避免光环效应/错误?
谢谢.
我不认为这是一个错误.您应该将ImageList颜色深度设置为32位,并且您需要使用视觉样式.
如果应用程序启用了视觉样式,则WinForms使用版本6.0的Windows常用控件,它支持Alpha透明度.否则,它将使用不支持alpha透明度的先前版本,并错误地呈现带有蓝色光环的ARGB图像.
如果需要解决方法,可以尝试创建相同大小的新位图,使用ListView的BackColor填充它们,在位图上创建Graphics对象,并将ARGB图像绘制到位图上.然后,您可以将这些预先放大的位图插入ImageList.但是,如果执行此操作,则ListView中的图标上的选择看起来会很有趣.
另一种解决方法是直接访问位图数据(使用LockBits())并手动混合任何半透明像素,这将使图像正确呈现并且看起来几乎与选择时的方式相同.