首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否必须在源代码中处理HiDPI功能,还是由.Net resp提供。窗户?

我是否必须在源代码中处理HiDPI功能,还是由.Net resp提供。窗户?
EN

Stack Overflow用户
提问于 2016-03-31 14:49:27
回答 2查看 1.4K关注 0票数 0

我正在开发一个使用C#和.Net 4.5的软件。我是在一台较旧的机器上开始这个项目的,它的dpi比例是100%。在我的新机器上,我必须设置200%的缩放,因为高分辨率显示。

在Visual设计器中,软件的Gui呈现得非常完美:设计器内的Gui

编译软件的Gui呈现坏的:编译软件中的Gui

我的期望是,由于我只使用.Net Gui元素/控件,而不使用自行设计的gui元素,所以窗口应该没有任何问题地处理缩放。但据我所见,窗户没有。

是否必须在Visual中的项目设置中启用HiDPI选项,还是必须在代码中处理HiDPI?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-31 14:57:45

默认情况下,大多数Windows窗体应用程序都是DPI不知道的。事实上,大多数Windows应用程序并未被DPI所察觉。因此,您需要在应用程序清单中选择新闻部意识:

代码语言:javascript
复制
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" 
          xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
 <asmv3:application>
   <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
     <dpiAware>true</dpiAware>
   </asmv3:windowsSettings>
 </asmv3:application>
</assembly>

因为DPI -感知是每个过程,VS设计人员在这个问题上没有选择-它运行在Visual中,而后者是新闻部所知道的。

不过,要确保所有的东西都能正常工作,不管是低新闻部还是高新闻部。新闻部意识到“我将处理所有新闻部缩放正确,不需要为我假装它;谢谢。”希望您已经使用了适当的自动标号和布局,或者使用了独立于设备的单元,而不是像素:)

当应用程序未声明已被DPI察觉时,Windows假设您是一个没有正确处理DPI的遗留应用程序。因此,为了防止出现问题,它假装你实际上是在渲染一个更小的显示器--在你的例子中,大小是一半,然后将结果表面放大到适当的大小。这会导致模糊,尤其是文本,但确保所有事物都有适当的大小和比率--例如,您不会得到比文本小的按钮,也不会有重叠的控件。

如果您使用正确的布局方法,Windows和WPF都非常支持DPI的正确处理,因此.NET绝对具有新闻部感知能力。但两者都很有能力成为DPI --不知道,而且大多数应用程序仍然忽略DPI问题,因此默认情况与任何其他Windows应用程序相同。由于没有“遗留的WPF”应用程序,而且最简单的方法是知道WPF,因此WPF的默认项目模板已经包含了声明DPI意识的清单,因此我假设您在Windows窗体中创建了项目:)事实上,考虑到当前Windows的发展情况,您可能希望有一个程序集清单,以便正确地管理所有兼容性特性:)

为了获得额外的好处,当您有多个带有不同DPI的监视器时,还会出现更多的问题--为了声明对此的适当支持,您可以使用<dpiAware>true/PM</dpiAware>。这只能在Windows 8.1+上使用,要正确地实现是非常棘手的。

票数 4
EN

Stack Overflow用户

发布于 2020-08-28 14:24:08

这样做对我很有帮助:

  1. 单击mremoteng桌面链接属性
  2. 转到兼容性选项卡
  3. 在“设置”部分下检查“覆盖高DPI缩放行为”
  4. 选择“应用程序”可选列表。

就这样,我希望它也适用于你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36336797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档