首先,这里获取屏幕缩放比例的思路是 屏幕缩放比例 = 屏幕逻辑高度 / 屏幕实际高度
其中屏幕的实际高度可直接通过 SystemParameters.PrimaryScreenHeight 获得;
而对于屏幕逻辑高度,由于在WPF中,不像winform那样可以通过System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height直接获取,且在WPF项目中一般也不建议直接引用winfrom
因此,本文主要考虑调用相关Windows API,通过其获取屏幕的逻辑高度,具体代码如下
1.相关Windows API代码
public static class WindowsMonitorAPI
{
private const string User32 = "user32.dll";
[DllImport(User32, CharSet = CharSet.Auto)]
[ResourceExposure(ResourceScope.None)]
public static extern bool GetMonitorInfo(HandleRef hmonitor, [In, Out]MONITORINFOEX info);
[DllImport(User32, ExactSpelling = true)]
[ResourceExposure(ResourceScope.None)]
public static extern bool EnumDisplayMonitors(HandleRef hdc, COMRECT rcClip, MonitorEnumProc lpfnEnum, IntPtr dwData);
public delegate bool MonitorEnumProc(IntPtr monitor, Int