繁体   English   中英

用于绘图应用程序的RenderTargetBitmap DPI

[英]RenderTargetBitmap DPI for drawing application

我一直在使用RenderTargetBitmap如图所示,画线,我的应用程序在这里

它正在工作,但我不太了解DPI。 如果需要在鼠标下画线,则使用96的DPI。我需要知道的是,对于所有设备和屏幕,这是否相同;如果不是,则如何找到正确的屏幕。

这是我用来获取系统DPI的代码:

// Get system DPI
Matrix m = PresentationSource.FromVisual(Application.Current.MainWindow).CompositionTarget.TransformToDevice;
if (m.M11 > 0 && m.M22 > 0)
{
    dpiXFactor = m.M11;
    dpiYFactor = m.M22;
}
else
{
    // Sometimes this can return a matrix with 0s. Fall back to assuming normal DPI in this case.
    dpiXFactor = 1;
    dpiYFactor = 1;
}

这将是系统具有正常DPI(96)的因素。 系统将具有dpiXFactor * 96的水平DPI和dpiYFactor * 96的垂直DPI。您可以在Windows 7上通过以下方法对其进行测试:转到开始菜单->“ dpi”,然后选择“使文本和其他项目变大或变小”。 100%表示系数为1,DPI为96。125%表示系数为1.25,DPI为120。150%表示系数为1.5,DPI为144。

后备逻辑是由客户崩溃报告引起的,我认为这可能仅是由全零的转换矩阵引起的。 可能会有更可靠的方式来获取系统DPI(也许是pinvoke?),但我不知道。

渲染非矢量图像时使用DPI。 您不必担心更改由操作系统和显示器硬件确定的不同显示器或屏幕的DPI。 您必须考虑的是图像中所需的像素化级别。 作为一般经验法则,在96x DPI下100x100像素以下的小图像应该可以,在100x100至300x300之间的任何东西都应在150-175 DPI之间。 对于大于300的任何内容,您可以达到300-400 DPI。 在某一点之后,它只是矫kill过正。 除非您进行随机打印,否则大多数商业打印均在350 DPI下完成。 如果您的描边为1-3,则可以使用96 DPI,如果较大,我建议您使用150 DPI。

您使用的DPI取决于对输出的处理方式。 如果仅在屏幕上不缩放就可以查看图形,则可以使用96dpi,并且您真的不必担心它了。 如果需要放大图形,则更高的分辨率可以提供更好的用户体验。 如果打印图形是用户体验的重要部分,那么300dpi可能会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM