You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WPF中编程获取Windows系统的文本缩放值

WPF 编程获取Windows系统文本缩放值的方法

Windows系统的文本缩放值本质是DPI缩放比例,对应设置面板中100%/125%/150%等选项,可通过以下两种方式实现获取:

方法1:使用WPF原生API(最简方案)

适合大多数仅需获取主屏幕或当前窗口缩放比例的场景,无需引入额外Win32依赖:

// 方式1:通过VisualTreeHelper直接读取当前窗口的DPI缩放
var dpiInfo = VisualTreeHelper.GetDpi(Application.Current.MainWindow);
double scale = dpiInfo.DpiScaleX; // 1.0对应100%缩放,1.25对应125%缩放,以此类推

// 若要转成设置面板显示的百分比格式
string scaleDisplay = $"{scale * 100}%";

方法2:调用Win32 API(兼容多屏场景)

如果需要获取指定屏幕的缩放比例,或需兼容更早版本的.NET框架,可调用Win32接口实现:

// 首先导入Win32 API
[DllImport("User32.dll")]
private static extern IntPtr MonitorFromWindow(IntPtr hwnd, uint dwFlags);

[DllImport("Shcore.dll")]
private static extern int GetDpiForMonitor(IntPtr hmonitor, uint dpiType, out uint dpiX, out uint dpiY);

// 调用示例:获取当前窗口所在屏幕的文本缩放值
const uint MONITOR_DEFAULTTONEAREST = 0x00000002;
const uint MDT_EFFECTIVE_DPI = 0;

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;
IntPtr monitorHandle = MonitorFromWindow(windowHandle, MONITOR_DEFAULTTONEAREST);
GetDpiForMonitor(monitorHandle, MDT_EFFECTIVE_DPI, out uint dpiX, out uint _);

// 系统默认标准DPI为96,对应100%缩放
double textScale = dpiX / 96.0;

对应Windows设置界面参考:
Windows文本缩放设置界面示意

内容的提问来源于stack exchange,提问作者Themelis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:09:04