CImage 处理带透明度png方法
2012-01-30 21:54
204 查看
//CImage 加载带半透明png函数
void LoadCImage(CImage*pImage,LPCTSTRpPath)
{
pImage->Load(pPath);
if (pImage->IsNull())
{
return;
}
CImageTransparent(pImage);
}
/* 解决CIMAGE 绘制半透图片背景不能半透的问题*/
void CImageTransparent(CImage*pImage)
{
if (pImage->GetBPP() == 32) //确认该图像包含Alpha通道
{
for (inti=0; i<pImage->GetWidth();i++)
{
for(int j=0; j<pImage->GetHeight(); j++)
{
byte*pByte = (byte*)pImage->GetPixelAddress(i, j);
pByte[0]= pByte[0] * pByte[3]/ 255;
pByte[1]= pByte[1] * pByte[3]/ 255;
pByte[2]= pByte[2] * pByte[3]/ 255;
}
}
}
}
在绘制时使用AlphaBlend来绘制即可
void LoadCImage(CImage*pImage,LPCTSTRpPath)
{
pImage->Load(pPath);
if (pImage->IsNull())
{
return;
}
CImageTransparent(pImage);
}
/* 解决CIMAGE 绘制半透图片背景不能半透的问题*/
void CImageTransparent(CImage*pImage)
{
if (pImage->GetBPP() == 32) //确认该图像包含Alpha通道
{
for (inti=0; i<pImage->GetWidth();i++)
{
for(int j=0; j<pImage->GetHeight(); j++)
{
byte*pByte = (byte*)pImage->GetPixelAddress(i, j);
pByte[0]= pByte[0] * pByte[3]/ 255;
pByte[1]= pByte[1] * pByte[3]/ 255;
pByte[2]= pByte[2] * pByte[3]/ 255;
}
}
}
}
在绘制时使用AlphaBlend来绘制即可
相关文章推荐
- 供CImage类显示的半透明PNG文件处理方法
- MFC中CImage类显示的半透明PNG存在的问题以及处理方法
- vc++加载透明png图片方法——GDI+和CImage两种 ,vs2005 vs2008 PNG背景
- vc++加载透明png图片的两种方法-GDI+和CImage
- VC++加载透明png图片的两种常用方法——GDI+和CImage
- IE6下PNG图片背景透明的处理方法
- vc++加载透明png图片方法——GDI+和CImage两种
- 两种修改png图片颜色方法的对比/游戏帧速度处理/J2me中实现淡入淡出效果
- vc++加载透明png图片方法——GDI+和CImage两种
- VC++使用CImage PNG转BMP图片透明背景处理
- vc++加载透明png图片方法——GDI+和CImage两种
- canvas.toDataURL('image/png')报错处理方法
- canvas.toDataURL image/png 报错处理方法推荐
- 文件上传,服务端压缩文件方法,重点是png与gif图片的压缩,保证了透明度与动画
- IE6 PNG图片透明度问题的方法
- 3种修复IE6 PNG图片透明度问题的方法
- vc++加载透明png图片方法——GDI+和CImage两种
- IE6中png背景图片透明的最好处理方法
- E6中PNG透明背景图片处理方法
- MFC和ATL共享的新类CImage为图像处理提供了许多相应的处理方法