C# 获取当前屏幕的宽高和位置
上一篇博客《C# 获取当前屏幕DPI》,介绍了如何获取当前屏幕的DPI设置
本章主要介绍如何获取当前窗口所在屏幕的信息
当前屏幕信息
如果当前是单屏幕,可以直接获取主屏幕
var primaryScreen = Screen.PrimaryScreen;
如果当前是多屏,建议通过窗口句柄获取Screen信息
var window = Window.GetWindow(ExportButton);//获取当前主窗口 var intPtr = new WindowInteropHelper(window).Handle;//获取当前窗口的句柄 var screen = Screen.FromHandle(intPtr);//获取当前屏幕
获取屏幕高宽/位置
DpiPercent
DPI转换比例常量,DpiPercent = 96;
为何DpiPercent为96 ?有一个概念“设备无关单位尺寸”,其大小为1/96英寸。比如:
【物理单位尺寸】=1/96英寸 * 96dpi = 1像素;
【物理单位尺寸】=1/96英寸 * 120dpi = 1.25像素;
关于WPF单位和系统DPI,可以参考《WPF编程宝典》中相关章节
Screen.Bounds
Bounds对应的是屏幕的分辨率,而要通过Bounds.Width获取屏幕的宽度,则需要将其转化为WPF单位的高宽。
步骤:
- 获取当前屏幕的物理尺寸(X/Y方向的像素)--如X方向 currentGraphics.DpiX / DpiPercent
- 将Screen.Bounds的信息转化为WPF单位信息 --如高度 screen.Bounds.Width / dpiXRatio
using (Graphics currentGraphics = Graphics.FromHwnd(intPtr)) { 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 top = screen.Bounds.Top / dpiYRatio; }
直接获取屏幕的高宽
也可以通过System.Windows.SystemParameters,直接获取主屏幕信息,不过这个类只能获取主屏幕的高宽。
这里的高宽指的是实际高宽。
主屏幕:
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;
关键字:WPF单位,屏幕高宽/位置
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
动态执行 VB.NET 和 C# 代码
原文: 动态执行 VB.NET 和 C# 代码 有时候我们需要尝试动态地与一些代码进行交互,而不是只能执行程序内已编死的代码,那该怎么办呢?我首先推荐各种脚本语言,如Javascript、Lua、Python等等,这些脚本语言有很多优秀的第三方类库,可以很方便的与 .NET 系统集成,让我们的程序中执行动态代码。 但如果你一定想用VB.NET或者C#的代码来运行一段程序,这里就要用到动态编译的功能了。 下面是我写的两个实例,你只需要在窗体FormMain中添加一个button和一个textbox即可,默认名为Button1、TextBox1。 VB.NET代码 Imports System.CodeDom.Compiler Imports System.Reflection Public Class FormMain Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' 编译参数 Dim cpars As New Comp...
- 下一篇
Web前端 — Bootstrap(1)
Bootstrap本次知识点: 1.Bootstrap简介 2.什么是Bootstrap 3.为什么使用Bootstrap 4.Bootstrap的结构 5.BootStrap的基本模板 1.Bootstrap简介 Bootstrap,来自Twitter(全国最大的微博 )的两名技术工程师研发的一个基于HTML、CSS、JavaScript的开源框架,是目前最受欢迎的前端框架。该框架代码简洁、视觉优美,可用于快速、简单地构建于PC及移动端设备的Web页面需求。 Bootstrap下载及演示: 国内文档翻译官网:http://www.bootcss.com/ 瓢城Web俱乐部官网:http://www.ycku.com/ 2.什么是Bootstrap Bootstrap是基于HTML、CSS、JAVASCRIPT的开源前端框架,它简洁、直观、强悍、灵活,使得Web开发更加快捷,用于开发响应式布局、移动设备优先的WEB项目。 3.为什么使用Bootstrap 为什么使用Bootstrap? (1)跨设备:自Bootstrap3起,框架包含了贯穿于整个库的移动设备优先的样式。 (2)跨浏览器...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- 2048小游戏-低调大师作品
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作