Windows 下的高 DPI 应用开发(UWP / WPF / Windows Forms / Win32)

本文介绍了Windows系统中高DPI应用开发的基础,涵盖UWP、WPF、Windows Forms等桌面UI框架对DPI的支持情况。内容包括DPI级别、DPI感知、Windows API的迁移和不同框架的DPI兼容性,旨在帮助开发者避免在高DPI环境下遇到的问题。
摘要由CSDN通过智能技术生成

本文将介绍 Windows 系统中高 DPI 开发的基础知识。由于涉及到坐标转换,这种转换经常发生在计算的不知不觉中;所以无论你使用哪种 Windows 下的 UI 框架进行开发,你都需要了解这些内容,以免不断踩坑。



Windows 高 DPI 应用开发课件

各种不同的 Windows 桌面 UI 框架

微软主推的 Windows 桌面 UI 框架有:

  • UWP
  • WPF
  • Windows Forms
  • Win32 与 C++
  • DirectX

后两者实际上并不是 UI 框架,是 UI 框架的底层不同实现。当然你单纯凭借 Win32 和 DirectX 去开发 GUI 应用也没有人拦你,只不过如果你试图只用 Win32 和 DirectX 而不进行各种 UI 组件封装的话,最终会非常痛苦的。

UWP 只支持 Windows 10(当然也分不同的小版本,兼容起来有些痛苦)。

WPF 和 Windows Forms 的最新版本只支持 Windows 7 SP1 及以上系统。如果要支持 Windows 7 和更早的系统,你需要降低 .NET Framework 的版本至 4.6.2 及以下;如果要 XP 支持,还需要到 4.0 及以下。

对普通用户而言的 DPI 级别

DPI 值有两种:系统 DPI (System DPI) 和屏幕 DPI (Monitor DPI)。自 Windows Vista 开始引入系统 DPI 概念,自 Windows 8.1 开始引入屏幕 DPI 概念。

在 Windows Vista / 7 / 8 中,操作系统提供了真正的 DPI 的设置:

Windows 7 的 DPI 设置
▲ Windows 7 的 DPI 设置(控制面板 -> 外观与个性化 -> 显示

这里的设置改的就是系统的 DPI 值。

Windows 7 中还额外提供了传统 Windows XP 风格 DPI 缩放比例的选项(此选项在 Windows 8 之后就删掉了),这也是在修改 DPI 值,只不过可以选择非 1/4 整数倍的 DPI 值。

自定义 DPI 设置
▲ 自定义 DPI 设置

自 Windows 8.1 开始,操作系统开始可以设置不同屏幕的 DPI 值了:

Windows 10 中的多个屏幕选择
▲ Windows 10 中的多个屏幕选择<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值