【问题标题】:Have a WPF Application ignore DPI settings让 WPF 应用程序忽略 DPI 设置
【发布时间】:2013-08-26 17:37:22
【问题描述】:

我有一个为 1900x1200 分辨率设计的 wpf 应用程序,但我们的一些用户使用 Windows 显示设置将所有内容调整为 125%-150%,有没有办法让应用程序忽略这些设置并仍然显示正常吗?

我看到了一个名为 SetProcessDPIAware here 的东西,但没有任何运气。

这是应用程序的屏幕截图,显示缩放比例高达 150%

如您所见,应用程序太小,无法调整大小。

【问题讨论】:

标签: c# wpf dpi


【解决方案1】:

在这种情况下,Dpi 意识将无济于事。它只会改变 CompositionTarget.TransformToDevice 矩阵,但控件大小不会改变。

我使用视图框来缩放所有内容。我的应用中的所有尺寸都是为 Surface Pro 3 纵向设计的:

<Window>
    <Viewbox Stretch="Uniform">
        <Grid Width="1440" Height="2160">
            <!-- ... -->
        </Grid>
    </Viewbox>
</Window>

您可以根据屏幕 DPI 计算视图框大小。看到这个答案:https://stackoverflow.com/a/12414433/991267

【讨论】:

  • 谢谢伙计。经过一整天查看每个显示器的 dpi 意识后,您治愈了我的头痛。
【解决方案2】:

忽略 dpi 的新方法是:

右键单击您的项目

添加 > 新项目

查找“应用程序清单文件(仅限 Windows)

在第 55 行取消注释,或查找 dpiAware

  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
      <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
    </windowsSettings>
  </application>

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2012-12-01
    相关资源
    最近更新 更多