WPF的canva生成图片的背景是黑色而不是透明,怎么解决?

四袋粉 2015-07-17 04:03:39
wpf使用canvas生成图片的代码:
// 生成png
public void ConvertToPng(Canvas canvas)
{
if (mFonts.Count.Equals(0))
return;
double d = canvas.Height;
RenderTargetBitmap bmp = new RenderTargetBitmap(100, 100, 96, 96, PixelFormats.Default);
bmp.Render(canvas);
string file = @"E:\Picture\test.png";
string Extension = System.IO.Path.GetExtension(file).ToLower();
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (Stream stm = File.Create(file))
{
encoder.Save(stm);
}
}
生成的图片应该为透明的部分,为什么是黑色的,应该如何来使图片背景变为透明。
...全文
713 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
检查你的 JpegBitmapEncoder(),换 wpf 比较普通、通用的控件截取成图片方法。
jy251 2015-07-20
  • 打赏
  • 举报
回复
首先根据文件路径获取到filestream,用file.open。 将这个stream中的内容读取到某个byte数组中以后,关掉,免得一直占用文件。 将这个byte转换成bitmap,是system.drawing中的bitmap,别搞错了,你需要手动添加这个引用。在.net引用里面找。 使用bitmap.maketransparent将背景颜色去掉。 将这个bitmap对象保存到某个memstream中,记得save的时候要选择png模式的图片,否则绝对是黑色背景。 将这个memstream加载到image的source中,然后看你的透明背景图吧!

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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