【发布时间】:2018-05-07 23:54:50
【问题描述】:
我有一个使用 InkCanvas 的 WPF 应用程序。当我渲染位图,保存到内存流,将生成的字节写入文件,然后在绘画中打开该文件时,图像被破坏了。知道我在这里可能做错了什么吗?尝试了在 SO 和 codeproject 上找到的几种解决方案。很明显,它正在捕获 InkCanvas 的一部分,但大部分是黑色的(我假设为空字节)。
编辑:也尝试了有/没有边距。以下是我尝试过的其他链接:
Converting InkCanvas Strokes to a Byte Array and back again
InkCanvas Load/Save operations
http://www.centrolutions.com/Blog/post/2008/12/09/Convert-WPF-InkCanvas-to-Bitmap.aspx
我需要生成的文件是位图/PNG,以便可以在另一台机器上查看。
private byte[] ConvertInkCanvasToByteArray()
{
int margin = (int)this.icSignature.Margin.Left;
int width = (int)this.icSignature.ActualWidth - margin;
int height = (int)this.icSignature.ActualHeight - margin;
RenderTargetBitmap rtb = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Default);
rtb.Render(icSignature);
BmpBitmapEncoder encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(rtb));
byte[] bitmapBytes;
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
ms.Position = 0;
bitmapBytes = ms.ToArray();
}
return bitmapBytes;
}
【问题讨论】: