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

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

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

cs 复制代码
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来检测屏幕是否被物理旋转,但可以通过比较屏幕的宽度和高度来间接判断分辨率是否接近于横屏或竖屏模式。

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

三、屏幕的分辨率?

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

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

cs 复制代码
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数组:

cs 复制代码
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支持。

相关推荐
游乐码9 小时前
c#变长关键字和参数默认值
学习·c#
全栈小510 小时前
【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理
人工智能·c#·json·.netcore·deepseek
wearegogog12310 小时前
基于C#的TCP/IP通信客户端与服务器
服务器·tcp/ip·c#
A_nanda16 小时前
C#调用Quartz.NET的完整实现。
c#·.net·quartz
2501_9307077816 小时前
使用C#代码在 PowerPoint 演示文稿中插入表格
开发语言·c#·powerpoint
少控科技17 小时前
C#基础训练营 - 01 - 数据类型
开发语言·c#
1314lay_100717 小时前
Vue3 + Element Plus项目和C# .Net 7.0 Core后端API项目发布部署到服务器
服务器·前端·javascript·vue.js·elementui·c#·.net
郝亚军17 小时前
c#如何编译、通过icd文件生成static_model.c和static_model.h
开发语言·c#
Traced back18 小时前
保姆级C#进阶教程:从入门到企业级开发,小白也能秒懂!
开发语言·c#
柒儿吖19 小时前
CharLS 无损 JPEG-LS 库在 OpenHarmony 的 lycium 适配与 ctest 验证
c++·华为·c#·harmonyos