Привет, я создаю изображение в памяти из Canvas, используя PngBitmapEncoder.
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 пока недоступен.
Спасибо