c语言编译器黑色背景图片,MFC中CImage加载png图片出现黑色背景的解决办法!

编程入门 行业动态 更新时间:2024-10-07 07:31:52

c语言编译器<a href=https://www.elefans.com/category/jswz/34/1769821.html style=黑色背景图片,MFC中CImage加载png图片出现黑色背景的解决办法!"/>

c语言编译器黑色背景图片,MFC中CImage加载png图片出现黑色背景的解决办法!

最近在写一个图片控件,要能加载除了bmp以外的格式的图片,要求最好能加载png,能响应鼠标左键按下、弹起、滑过(鼠标经过)等等消息。我让控件继承CWnd,然后再在XTP的浮动面板中作为子窗口测试以下加载图片的效果。结果发现,不管我是否对图片做了透明通道的处理,背景色都是黑色,这个问题困扰我好几天,网上各种找资料也没有解决。终于今天找到了问题在哪里了:stdafx.h中各种关于版本的宏,定义的版本太低了,需要0x0500及以上才可以支持透明特性。改成0x0500及以上就可以了(虽然支持透明特性,但是还是要做预乘,否则会有白边)。其实这个知识点也有人提到,我看了看自己做实验的那个stdafx.h里面定义的版本没问题,以为自己出问题的那个工程的stdafx.h也没问题(因为这个工程不是我创建的,后来才知道是XTP向导生成的工程)。后来发现他们定义的版本居然不一样,都是向导生成的,不过一个是MFC自带的向导(VS05),一个是XTP工程的向导,后者定义的版本会比较低。呼呼,今日先传个预乘的代码,待接口全部整理好了再全部上传:

void CPicCtrl::DealAlphaChannel(CImage& image)

{

if (image.GetBPP() == 32)

{

for (int i=0; i

{

for (int j=0; j

{

unsigned char* pucColor = reinterpret_cast(image.GetPixelAddress(i , j));

pucColor[0] = pucColor[0] * pucColor[3] / 255;

pucColor[1] = pucColor[1] * pucColor[3] / 255;

pucColor[2] = pucColor[2] * pucColor[3] / 255;

}

}

}

}

更多推荐

c语言编译器黑色背景图片,MFC中CImage加载png图片出现黑色背景的解决办法!

本文发布于:2024-02-14 01:31:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761289.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:黑色   编译器   解决办法   背景图片   加载

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!