作者:无休止的等待Happy_212 | 来源:互联网 | 2023-05-17 12:41
PNG图片本身就带有透明度,但是用CImage画出来的png却有白色背景,那么如何解决呢?原因在于alpha的处理,CImage并没有做处理,而gdi+做过了处理,我们正
PNG图片本身就带有透明度,但是用CImage画出来的png却有白色背景,那么如何解决呢?
原因在于alpha的处理,CImage并没有做处理,而gdi+做过了处理,我们正是要做这样的处理,并不复杂反而简单。
#include
void CrossImage(CImage &img) //对像素进行转换
{
for(int i=0; i {
for(int j=0; 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,应该是透明背景,看来百度文章编辑不支持。
效果如图:
我先画了一幅绿色背景图,接着再画了上面的图,效果真透明了。