【问题标题】:Change windows dpi setting C#更改 windows dpi 设置 C#
【发布时间】:2014-08-29 05:42:30
【问题描述】:

我遇到了一个与窗口 dpi 设置有关的问题。如果 windows dpi 设置为 100% 一切都很好。但如果用户将其更改为 125%……我的应用程序的某些部分显示错误的大小。我知道这个问题,我知道如何处理,但我的客户希望在应用程序运行时,如果 windows 的当前 dpi 设置不等于 100% -> 将其更改为 100%

我仍然坚持解决方案。你有改变windows dpi设置值的解决方案吗?

先谢谢了!!!

【问题讨论】:

  • 我建议修复您的应用程序遇到的任何问题,或者让用户知道您的应用程序在他们的设置下无法按预期工作。不要调整用户的计算机
  • 把你的 UI 元素放到 ViewBox 中,它会自动调整屏幕。
  • 问题是用户计算机也是客户计算机。他们提出了一个新的要求,即他们想要使 windows dpi 设置必须始终为 100%...当应用程序运行时
  • 我不会使用需要我更改系统设置才能正常工作的应用程序。
  • @DhavalPatel 但客户希望在应用程序启动时将 Windows dpi 设置值更改为 100%

标签: c# wpf dpi


【解决方案1】:

您可以通过修改注册表项HKEY_CURRENT_USER\Control Panel\Desktop:LogPixels 的注册表值来完成此操作。类型为REG_DWORD

您可以查看注册表方法here 以帮助如何修改注册表值。

将值设置为 96 (0x60) 对应于将 DPI 设置设置为“更小”(100%)。

  • 96 是“更小”(100%),
  • 120 是“中等”(125%),
  • 144 是“更大” (150%)。

请注意,计算机可能仍需要重新启动或注销/登录才能使一切按预期使用该设置工作。

【讨论】:

  • 我知道。我曾经也有过一样的问题。但恐怕没有办法解决重启。
  • 您所指的 "60" 实际上是 0x00000060。这是注册表项的十六进制值,该值 (0x00000060) 与十进制值 96 相同。使用 RegEdit 时,您可以在括号中看到十进制值 96。 0x00000060 = 96 = 100%,0x00000078 = 96 = 125%,0x00000090 = 96 = 150%。
【解决方案2】:

你必须在你的应用程序中使用 ViewBox。

它只是缩放以使内容适合可用大小。它不会调整内容的大小,但会对其进行转换。这意味着所有文本大小和线宽也被缩放。它的行为与将图像或路径上的 Stretch 属性设置为统一的行为大致相同。

例如

  <Viewbox Stretch="Uniform">
      <Button Content="Test" />
    </Viewbox>

【讨论】:

  • 但是viewbox不能应用于对象的窗口对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 2010-12-19
  • 1970-01-01
  • 2019-07-09
  • 2011-04-14
  • 2011-06-13
  • 2012-05-09
相关资源
最近更新 更多