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

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支持。

 

 


http://www.kler.cn/a/228534.html

相关文章:

  • 偏序关系.
  • HTML语言的计算机基础
  • mysql之表的外键约束
  • linux如何并行执行命令
  • STM32低功耗模式
  • 如何在龙蜥 OS(AliOS)上安装极狐GitLab?
  • 【Linux】静态库和动态库
  • Linux环境生成allure测试报告
  • 龙行龘龘迎新春,书写春联送祝福
  • 云计算关键技术
  • 3、安全开发-Python-协议库爆破FTPSSHRedisMYSQLSMTP等
  • 紫光展锐M6780丨用MEMC捕捉每帧精彩
  • 计算机网络_1.6.3 计算机网络体系结构分层思想举例
  • 蓝桥杯2024/1/31-----底层测试模板
  • 一篇文章认识Vue3
  • 语言类型(静态语言、动态语言)
  • leetcode680 验证回文串 II
  • 行测怎么搜题答案?推荐你使用这七个公众号和工具 #经验分享#职场发展#学习方法
  • 七月论文审稿GPT第2.5版:微调GPT3.5 turbo 16K和llama2 13B以扩大对GPT4的优势
  • 【51单片机】直流电机实验和步进电机实验
  • JavaSE-项目小结-IP归属地查询(本地IP地址库)
  • 突破编程_C++_基础教程(指针)
  • Java on Azure Tooling 2024年1月更新|Azure Key Vault 支持、示例项目创建支持及更多
  • 【Java网络编程05】网络原理进阶(三)
  • 运维自动化bingo前端
  • CHS_09.2.3.6_2+多生产者-多消费者