代码之家  ›  专栏  ›  技术社区  ›  Herrozerro

让WPF应用程序忽略DPI设置

  •  9
  • Herrozerro  · 技术社区  · 12 年前

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

    我看到了一个叫做SetProcessDPIAware的东西 here ,但运气不佳。

    这是应用程序的屏幕截图,显示比例提高到150% Application with Scaling

    正如您所看到的,这个应用程序太小了,无法使其大小正确。

    2 回复  |  直到 12 年前
        1
  •  4
  •   Community Mohan Dere    8 年前

    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

        2
  •  2
  •   Dejco    4 年前

    忽略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>