是否可以以编程方式设置应用程序的 DPI?

Posted

技术标签:

【中文标题】是否可以以编程方式设置应用程序的 DPI?【英文标题】:Is it possible to set the DPI of an application programatically? 【发布时间】:2009-11-06 13:39:56 【问题描述】:

是否可以通过编程方式设置应用程序的 DPI,还是只能通过系统偏好设置来设置 DPI?

注意:我的应用程序的 GUI 以 MFC 和 .NET 形式编码。

更新: 经过一番研究,我发现没有办法这样做,所以我必须同意这里唯一的答案;做不到。

【问题讨论】:

真正的 DPI 取决于输出设备(屏幕、打印机等),所以应该在输出驱动级别设置。在每个应用程序的基础上设置它是没有意义的。 @David 其实这很有意义。它在带有触摸屏的设备上运行,为了使其更易于触摸,我想让一切都变得更大(尽可能少地努力)。但是,我确实希望为 Windows 和其他应用程序保持系统 DPI 不变。 不,这没有意义,DPI 不是每个应用程序的设置,甚至不是应用程序级别的概念。您需要手动增加所有控件的大小。 @David 好的,我同意,这没有任何意义,因为 DPI 旨在反映您的屏幕分辨率。我的目标是在不改变整个系统规模的情况下启用 Vista 的自动应用程序扩展。 应该是@Roel。抱歉有任何困惑.. :-s 【参考方案1】:

假设您正在谈论确定物理 DPI 设置之间的比率的 Windows 系统范围设置(取决于物理屏幕 + 分辨率),简单的答案是“你不能”,至少,不是在 WinForms 应用程序的应用程序级别打开。

可以做的就是在表单中添加缩放代码,请参阅this *** 条目。基本上,将AutoScaleMode 设置为ScaleMode.Dpi。有关详细信息,请参阅其他条目。

【讨论】:

我正在尝试实现与系统范围设置相同的效果,但仅限于我的应用程序。换句话说,我想让 Windows 自动缩放我的应用程序,但我希望应用程序提供 DPI。

以上是关于是否可以以编程方式设置应用程序的 DPI?的主要内容,如果未能解决你的问题,请参考以下文章

可以在每个会话的基础上以编程方式启用/禁用 DPI 缩放吗?

启用 DPI Awareness 设置无效 (VisualStudio 2017)

在iOS中以编程方式压缩PNG图像

在android中以编程方式获取屏幕密度?

是否可以以编程方式设置 gdb 观察点?

在 iOS 中以编程方式将用户带到后台刷新设置