gpt4 book ai didi

c# - RenderTargetBitmap 模糊

转载 作者:行者123 更新时间:2023-11-30 18:41:45 26 4
gpt4 key购买 nike

您好,我正在使用 PngBitmapEncoder 从 Canvas 在内存中创建图像。

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() 方法将图像发送到打印机。但是打印出来的结果很模糊。

我尝试将原始 Canvas 尺寸与打印尺寸相匹配以避免任何缩放,同样我尝试使原始 Canvas 尺寸大得多,以便缩放后的图像保持质量,但最终打印图像总是模糊不清。

任何人都可以提供任何建议/替代方案。我已经设置了相当多的 GDI+ 打印例程,现在还不能移动到 wpf 文档。

谢谢

最佳答案

您正在以 96 DPI 捕获位图。不要在 RenderTargetBitmap 的构造函数中使用 96,而是尝试匹配打印机输出的 DPI。或者,您可以计算并计算宽度/高度的差异,并相应地重新缩放报告上的图像(结果是报告上的图像会显得更小)。

关于c# - RenderTargetBitmap 模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6558457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com