如何利用CImage和AlphaBlend绘制PNG图片?
来源:互联网 发布:软件的外部接口 编辑:程序博客网 时间:2024/05/17 03:44
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,应该是透明背景,看来百度文章编辑不支持。
效果如图:
我先画了一幅绿色背景图,接着再画了上面的图,效果真透明了。
0 0
- 如何利用CImage和AlphaBlend绘制PNG图片?
- 关于CImage和AlphaBlend的透明PNG图片显示问题
- 如何加载显示jpg ,png bmp等图片,利用CImage
- 利用CImage显示透明PNG图片
- 利用CImage类加载png图片
- 利用CImage显示透明PNG图片
- Cimage处理png图片。
- 加载png图片的两种方法 - GDI+和CImage
- 使用GDI+和CImage类加载png图片
- 加载png图片的两种方法 - GDI+和CImage
- CImage 加载透明PNG图片
- 使用MFC CImage类绘制PNG图片时遇到的问题
- 使用MFC CImage类绘制PNG图片时遇到的问题
- 使用MFC CImage类绘制PNG图片时遇到的问题
- 使用CImage绘制半透明图片
- 使用CImage加载PNG图片文件
- 使用CImage显示透明的PNG图片
- 使用CImage类切割png图片
- 补码
- Sort List
- 1:javac代码提取
- 第1章 第11题
- c++字符串详解(转)
- 如何利用CImage和AlphaBlend绘制PNG图片?
- Jmeter简介
- C语言学习期间遇到的所有问题及解决-在15PB
- C#.NET和C++结构体Socket通信与数据转换
- 记一次TX的笔试面试经历
- oracle数据库锁表及解锁方式
- php中Session使用方法详解
- .net实现PTZ云台控制
- Windows下Python科学计算的环境搭建