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);

posted on 2019-06-18 18:01  归海一刀  阅读(302)  评论(0)    收藏  举报