【发布时间】:2020-12-24 13:49:59
【问题描述】:
我目前正在 WPF 中开发一个简单的绘图应用程序。 我的应用程序中的一项功能是根据用户给定的测量值生成基本几何形状的图像。
所以我只是尝试生成宽度/高度为 96 个单位的正方形。所以为此我应该得到 1 英寸(根据与设备无关的单位(1/96 英寸))。但是当我打印生成的图像时,它小于 1 英寸(边长为 2.22 厘米)
我使用下面的代码来渲染图像。
RenderTargetBitmap rtb = new RenderTargetBitmap((Int32)bounds.Width, (Int32)bounds.Height, 96, 96, PixelFormats.Pbgra32);
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.RenderOpen())
{
VisualBrush vb = new VisualBrush(target);
dc.DrawRectangle(vb, null, new Rect(new Point(), bounds.Size));
}
rtb.Render(dv);
谁能帮我解决这个问题?
【问题讨论】:
-
您似乎认为像素具有固定的物理表示/大小。他们没有。
-
所以为了打印 1inch squre。 WPF 的大小是多少?
-
正如我所说,没有直接的相关性。没有“WPF 大小”。打印时必须设置正确的 DPI/PPI。
-
您还没有告诉我们您实际上是如何打印您的图纸,但您应该使用
PrintDialog.PrintVisual获得准确的结果。此外,将 RenderTargetBitmap 保存到图像文件并随后以“自然”大小打印应该可以。