如何创建透明的png图片

guzh 2009-05-20 10:07:49
如何创建一幅透明图片呢?就像PNG那样的.

用GDI+可以创建吗?

是创建,不是显示!!!
...全文
991 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsc2001 2009-05-20
  • 打赏
  • 举报
回复
可以的,只要控制其alpha通道就行了,设计其透明度值。
zhangyan_wt 2009-05-20
  • 打赏
  • 举报
回复
可以的,用GDI+读一个普通图像bitmap,然后对于每个点

Color color, colorTemp;
bitmap.GetPixel(iColumn, iRow, &color);
colorTemp.SetValue(color.MakeARGB(
(BYTE)a, // 该点的透明度,0~255
color.GetRed(),
color.GetGreen(),
color.GetBlue()));
bitmap.SetPixel(iColumn, iRow, colorTemp);

相当于除了RGB以外,加上一个透明度。
然后保存成PNG,就可以了。
zhangyan_wt 2009-05-20
  • 打赏
  • 举报
回复
这幅图像如果用图片查看器看是粉色的,就对了。相当于白色背景上盖了一层透明的红色。
图片查看器应用程序的问题。
chiwa737 2009-05-20
  • 打赏
  • 举报
回复
有png的开源库吧, 直接调用里面函数就好了
guzh 2009-05-20
  • 打赏
  • 举报
回复
保存后用windows自带的图片查看器显示出来的还是没有透明啊.

Gdiplus::GdiplusStartupInput gdiplusStartupInput;

ULONG_PTR gdiplusToken;

if ( GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL) != Gdiplus::Ok )

return;

BYTE* picdata = new BYTE[240*320*4];
memset(picdata,255,240*320*4);
Bitmap bitmap(240,320,240*4,PixelFormat32bppARGB,picdata);

Color color, colorTemp;
for(int iColumn=0;iColumn<240;iColumn++)
{
for(int iRow=0;iRow<320;iRow++)
{
bitmap.GetPixel(iColumn, iRow, &color);
colorTemp.SetValue(color.MakeARGB((BYTE)100,255,0,0)); //设为全红,透明度100
bitmap.SetPixel(iColumn, iRow, colorTemp);
}
}

CLSID encoder;
if (!GetEncoderClsid(L"mime/png", &encoder))
return ;

bitmap.Save(L"C:\\data.png", &encoder, NULL);


Gdiplus::GdiplusShutdown(gdiplusToken);
fengrx 2009-05-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xsc2001 的回复:]
可以的,只要控制其alpha通道就行了,设计其透明度值。
[/Quote]

正确。
flm007 2009-05-20
  • 打赏
  • 举报
回复
PNG本身就是透明图片!!

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧