C# 获取当前屏幕的宽高和位置
2021-04-07 03:24
标签:常量 graphics dpi 通过 win 1.2 scree 屏幕 port 上一篇博客《C# 获取当前屏幕DPI》,介绍了如何获取当前屏幕的DPI设置 本章主要介绍如何获取当前窗口所在屏幕的信息 如果当前是单屏幕,可以直接获取主屏幕 如果当前是多屏,建议通过窗口句柄获取Screen信息 DPI转换比例常量,DpiPercent = 96; 为何DpiPercent为96 ?有一个概念“设备无关单位尺寸”,其大小为1/96英寸。比如: 【物理单位尺寸】=1/96英寸 * 96dpi = 1像素; 【物理单位尺寸】=1/96英寸 * 120dpi = 1.25像素; 关于WPF单位和系统DPI,可以参考《WPF编程宝典》中相关章节 Bounds对应的是屏幕的分辨率,而要通过Bounds.Width获取屏幕的宽度,则需要将其转化为WPF单位的高宽。 步骤: 也可以通过System.Windows.SystemParameters,直接获取主屏幕信息,不过这个类只能获取高宽。 这里的高宽指的是实际高宽。 主屏幕: 多屏时全屏幕: 当前工作区域:(除去任务栏的区域) 关键字:WPF单位,屏幕高宽/位置 C# 获取当前屏幕的宽高和位置 标签:常量 graphics dpi 通过 win 1.2 scree 屏幕 port 原文地址:https://www.cnblogs.com/kybs0/p/9122526.html当前屏幕信息
var primaryScreen = Screen.PrimaryScreen;
var window = Window.GetWindow(ExportButton);//获取当前主窗口
var intPtr = new WindowInteropHelper(window).Handle;//获取当前窗口的句柄
var screen = Screen.FromHandle(intPtr);//获取当前屏幕
获取屏幕高宽/位置
DpiPercent
Screen.Bounds
double dpiXRatio = currentGraphics.DpiX / DpiPercent;
double dpiYRatio = currentGraphics.DpiY / DpiPercent;
var width = screen.Bounds.Width / dpiXRatio;
var height = screen.Bounds.Height / dpiYRatio;
var left = screen.Bounds.Left / dpiXRatio;
var right = screen.Bounds.Right / dpiYRatio;
直接获取屏幕的高宽
var screenHeight = SystemParameters.PrimaryScreenHeight;
var screenWidth = SystemParameters.PrimaryScreenWidth;
var primaryScreenHeight = SystemParameters.FullPrimaryScreenHeight;
var primaryScreenWidth = SystemParameters.FullPrimaryScreenWidth;
var workAreaWidth = SystemParameters.WorkArea.Size.Width;
var workAreaHeight = SystemParameters.WorkArea.Size.Height;