こんにちは私は、PngBitmapEncoderを使用してCanvasから画像をメモリに作成しています。RenderTargetBitmapがぼんやりです
public void CaptureGraphic()
{
Canvas canvas = new Canvas();
canvas.SnapsToDevicePixels = true;
canvas.Height = IMAGEHEIGHT;
canvas.Width = IMAGEWIDTH;
Draw(canvas);
canvas.Arrange(new Rect(0, 0, IMAGEWIDTH, IMAGEHEIGHT));
member.MemberImage = GetPngFromUIElement(canvas);
}
public static System.Drawing.Image GetPngFromUIElement(Canvas source)
{
int width = (int)source.ActualWidth;
int height = (int)source.ActualHeight;
if (width == 0)
width = (int)source.Width;
if (height == 0)
height = (int)source.Height;
RenderTargetBitmap bitmap = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);
bitmap.Render(source);
PngBitmapEncoder enc = new PngBitmapEncoder();
enc.Interlace = PngInterlaceOption.Off;
enc.Frames.Add(BitmapFrame.Create(bitmap));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
enc.Save(ms);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
ms.Flush();
ms.Dispose();
return image;
}
次に、GDI + DrawImage()メソッドを使用してイメージをプリンタに送信します。しかし、印刷結果はぼやけています。
スケーリングを避けるために、元のキャンバスサイズと印刷サイズを一致させようとしました。同様に、元のサイズをかなり大きくしてスケーリングしたイメージが品質を保持するようにしました。
提案/代替案は誰でも提供できます。私はかなりのGDI +印刷ルーチンを既にセットアップしていて、wpfドキュメントに移動することはオプションではありません。
ありがとうございました
質問にタグを追加することで、あなたの自己を助けることができると思います。 – radbyx