问题描述
wpf使用canvas生成图片的代码://生成pngpublicvoidConvertToPng(Canvascanvas){if(mFonts.Count.Equals(0))return;doubled=canvas.Height;RenderTargetBitmapbmp=newRenderTargetBitmap(100,100,96,96,PixelFormats.Default);bmp.Render(canvas);stringfile=@"E:Picturetest.png";stringExtension=System.IO.Path.GetExtension(file).ToLower();BitmapEncoderencoder=newJpegBitmapEncoder();encoder.Frames.Add(BitmapFrame.Create(bmp));using(Streamstm=File.Create(file)){encoder.Save(stm);}}生成的图片应该为透明的部分,为什么是黑色的,应该如何来使图片背景变为透明。
解决方案
解决方案二:
解决方案三:
首先根据文件路径获取到filestream,用file.open。将这个stream中的内容读取到某个byte数组中以后,关掉,免得一直占用文件。将这个byte转换成bitmap,是system.drawing中的bitmap,别搞错了,你需要手动添加这个引用。在.net引用里面找。使用bitmap.maketransparent将背景颜色去掉。将这个bitmap对象保存到某个memstream中,记得save的时候要选择png模式的图片,否则绝对是黑色背景。将这个memstream加载到image的source中,然后看你的透明背景图吧!
解决方案四:
检查你的JpegBitmapEncoder(),换wpf比较普通、通用的控件截取成图片方法。