InkCanvasを使用するWPFアプリケーションがあります。ビットマップをレンダリングし、メモリストリームに保存し、結果のバイトをファイルに書き込み、ペイントでそのファイルを開くと、イメージはマングリングされます。私がここで間違っているかもしれないどんな考え? SOとcodeprojectで見つかったいくつかのソリューションを試してみました。 InkCanvasの一部をキャプチャしているのは明らかですが、その大部分は黒です(nullバイトと仮定します)。InkCanvasをファイルにバイト配列に保存すると画像が変形する
EDIT:マージンあり/なし。ここで私が試した他のリンクは以下のとおりです。
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する結果ファイルを必要とします他のマシンで見ることができます。 InkCanvasから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;
}
ありがとう@クレメンス、これは完全に問題を解決しました。とても有難い! – joelc