当前位置: 首页 > news >正文

C# 怎么判断屏幕是第几屏幕?屏幕是垂直还是水平?屏幕的分辨率?

一、怎么判断屏幕是第几屏幕?

可以使用System.Windows.Forms.Screen.AllScreens属性来获取所有已连接的屏幕,并根据鼠标位置或窗口的位置来判断它所在的屏幕索引。

using System;
using System.Windows.Forms;// 获取鼠标当前位置所在的屏幕
Point cursorPos = Cursor.Position;
Screen currentScreen = Screen.FromPoint(cursorPos);
int screenIndex = Array.IndexOf(Screen.AllScreens, currentScreen);Console.WriteLine($"当前屏幕是第 {screenIndex + 1} 个屏幕。");

 

二、屏幕是垂直还是水平?

对于Windows桌面应用程序而言,屏幕的方向通常是指其分辨率的比例,而不是物理旋转。系统并不直接提供API来检测屏幕是否被物理旋转,但可以通过比较屏幕的宽度和高度来间接判断分辨率是否接近于横屏或竖屏模式。

Screen currentScreen = Screen.PrimaryScreen; // 或者使用上面的方法获取到的当前屏幕
bool isLandscape = currentScreen.Bounds.Width > currentScreen.Bounds.Height;
if (isLandscape)
{Console.WriteLine("当前屏幕为横向(水平)模式");
}
else
{Console.WriteLine("当前屏幕为纵向(垂直)模式");
}

三、屏幕的分辨率?

在C#中获取屏幕分辨率,可以使用System.Windows.Forms.Screen类的方法来获取主屏幕或其他特定屏幕的分辨率信息。

以下是如何获取主屏幕分辨率的示例:

using System;
using System.Windows.Forms;class Program
{static void Main(){// 获取主屏幕分辨率Screen primaryScreen = Screen.PrimaryScreen;int screenWidth = primaryScreen.Bounds.Width;int screenHeight = primaryScreen.Bounds.Height;Console.WriteLine($"主屏幕分辨率:{screenWidth} * {screenHeight}");}
}

如果想获取所有连接屏幕的分辨率,可以遍历Screen.AllScreens数组:

foreach (Screen screen in Screen.AllScreens)
{int index = Array.IndexOf(Screen.AllScreens, screen) + 1;string screenOrientation = screen.Bounds.Width > screen.Bounds.Height ? "横向" : "纵向";Console.WriteLine($"第 {index} 屏幕分辨率:{screen.Bounds.Width} * {screen.Bounds.Height},方向:{screenOrientation}");
}

这样不仅可以得到每个屏幕的分辨率,还能判断出屏幕大致是垂直(纵向)还是水平(横向)显示。不过需要注意的是,这里的“方向”基于分辨率比例而非物理旋转角度。

如果需要检测设备物理旋转状态,请查阅对应平台的具体API支持。

 

 

相关文章:

  • 老版本O记12C上线前的一些调整
  • npm ERR! code CERT_HAS_EXPIRED
  • oracle数据回滚导致业务性能问题排查
  • 115.工业相机海康SDK开发指南(阅读)
  • IP数据云识别真实IP与虚假流量案例
  • 第二章 RocketMQ 的安装与启动
  • openGauss学习笔记-212 openGauss 数据库运维-日志参考
  • php工厂模式
  • 网络协议与攻击模拟_11DHCP欺骗防护
  • 服务器常遇的响应状态码
  • Linux 驱动开发基础知识—— 具体单板的 LED 驱动程序(五)
  • 代码随想录算法训练营day 23|第六章 二叉树part09
  • Qt 5.9.4 转 Qt 6.6.1 遇到的问题总结(三)
  • 嵌入式Linux学习DAY18---IO编程
  • 正则表达式可视化工具regex-vis
  • CentOS从零开始部署Nodejs项目
  • Git初体验
  • iOS 颜色设置看我就够了
  • Kibana配置logstash,报表一体化
  • mongodb--安装和初步使用教程
  • Next.js之基础概念(二)
  • OSS Web直传 (文件图片)
  • SpringCloud集成分布式事务LCN (一)
  • zookeeper系列(七)实战分布式命名服务
  • 复习Javascript专题(四):js中的深浅拷贝
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 模型微调
  • 目录与文件属性:编写ls
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 什么软件可以剪辑音乐?
  • 思维导图—你不知道的JavaScript中卷
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 做一名精致的JavaScripter 01:JavaScript简介
  • Java性能优化之JVM GC(垃圾回收机制)
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • #pragma once与条件编译
  • (07)Hive——窗口函数详解
  • (1)虚拟机的安装与使用,linux系统安装
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (分类)KNN算法- 参数调优
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (七)Java对象在Hibernate持久化层的状态
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)大型网站架构演变和知识体系
  • (转)项目管理杂谈-我所期望的新人
  • *2 echo、printf、mkdir命令的应用
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET开发者必备的11款免费工具
  • .NET委托:一个关于C#的睡前故事
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)