【问题标题】:Supporting high DPI UIs in Windows 10在 Windows 10 中支持高 DPI UI
【发布时间】:2018-12-14 11:06:46
【问题描述】:

我在 Delphi XE2 中编写了一个应用程序。我已经更新到 Delphi 10.2。当我编译我的代码时,似乎用户界面非常小。这发生在 Windows 10 中。我正在编写一个空白应用程序,一切似乎都很好,但以前的应用程序似乎很小。我认为这与 DPI 支持有关,但我在 XE2 中编写的前一个似乎运行良好。

我想我必须更改一些设置,也许是在应用程序设置中。但我还没找到。

如果这个问题不符合要求,我会删除它。我真的不想惹任何人生气。

编辑: 这是我的清单文件。如您所述,已启用 DPI。但不是必须的吗?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
    </security>
  </trustInfo>
  <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <asmv3:windowsSettings
         xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>

谢谢

【问题讨论】:

  • 请检查使用Delphi 10.2创建的应用程序是否已在清单中声明该应用程序为“高DPI感知”:Delphi High DPI switch between own scaling and Windows scaling
  • 这是一个非常复杂的领域。通常,应用程序会显得很小,因为您声明它支持 DPI,但随后无法响应 DPI。通常,如果您声明它不支持 DPI,那么系统将为您扩展应用程序。在这种情况下,您的应用程序会扩展,但会受到文本模糊的影响。您需要做的是阅读 Windows 中的 DPI 意识,并使用空应用程序进行一些实验。
  • @DavidHeffernan:他已经尝试过使用空应用程序:“我正在编写一个空白应用程序,一切看起来都很棒,但之前的应用程序似乎很小。”
  • 感谢您的所有 cmets。是的,在自定义清单中启用了 DPI。将其设置为 false 可解决此问题。但正如@DavidHeffernan 所说,我认为这会很模糊。
  • @HeartWare 我说,“做一些实验”。我的意思是探索各种选项的影响,首先阅读它们。学习理论。通过尝试将其付诸实践来测试您对该理论的理解。

标签: delphi


【解决方案1】:

或许设置了这个配置项:

【讨论】:

  • 我有一个自定义清单,它是这样的:false
  • 您确定这个清单实际上包含在 .EXE 文件中吗?尝试从.EXE文件中解压出来,编译应用后查看。可能是项目文件从 XE2 升级到 10.2 造成的干扰。
  • 您可以使用它来查看嵌入式清单:blogs.msdn.microsoft.com/mithuns/2009/12/16/…
  • 当我删除该行时它起作用了。但它不是必须设置为true吗?
  • 请记住还有:dpiAwareness,它允许选择备用 DPI 缩放选项并覆盖 dpiAware。见:stackoverflow.com/questions/23551112/…
猜你喜欢
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 2010-11-10
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多