您的位置:首页 > 其它

如何利用CImage和AlphaBlend绘制PNG图片?

2015-04-12 22:36 369 查看
PNG图片本身就带有透明度,但是用CImage画出来的png却有白色背景,那么如何解决呢?

原因在于alpha的处理,CImage并没有做处理,而gdi+做过了处理,我们正是要做这样的处理,并不复杂反而简单。

#include <atlimage>

void CrossImage(CImage &img) //对像素进行转换

{

for(int i=0; i<img.GetWidth(); i++)

{

for(int j=0; j<img.GetHeight(); j++)

{

UCHAR *cr = (UCHAR*) img.GetPixelAddress(i,j);

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

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

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

}

}

}

//绘制png

CImage img;

img.Load("res/smiling.png");

CrossImage(img);

img.AlphaBlend(dc,15,30);

原图:


这个图是png,应该是透明背景,看来百度文章编辑不支持。

效果如图:


我先画了一幅绿色背景图,接着再画了上面的图,效果真透明了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: