烦人的GDI+bug(icon转bitmap居然丢失alpha通道)

昨天做一个新功能,获取桌面的图标并在自己的窗口上显示。开始做了一个demo,wtl的gdi实现的界面一切顺利,但换到gdi+的工程里面的时候,在绘制icon的时候遇到了麻烦,图标显示直接把alpha通道给丢失了,图标出现了好多黑色的阴影。

网上搜索了半天,发现很多人都遇到了这个问题Bitmap::FromHICON转化之后造成的icon的alpha通道丢失了,这种情况出现很多是绘制imagelist里面的item。网上有人提到是“问题在bitmap=Gdiplus::Bitmap::FromHICON(rInfo.hIcon); ,在这里对alpha的处理有问题,再转换成Format32bppArgb格式的就可以了。”,很遗憾转换完成之后还是老样子,猜想FromHICON已经把数据丢失了,再转似乎也不会有什么意义了,不知道是不是还有其他的转换方式。网上又搜了半天,老外也提到了一些解决办法,基本上都是围绕Format32bppArgb的方案,尝试之后还是没有效果。

最终,不得已之下,只好在绘制icon的时候换成gdi了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值