C# 如何获取屏幕分辨率缩放比例

获取分辨率缩放比例:


        public const int HORZRES = 8;
        public const int VERTRES = 10;
        public const int LOGPIXELSX = 88;
        public const int LOGPIXELSY = 90;
        public const int DESKTOPVERTRES = 117;
        public const int DESKTOPHORZRES = 118;

        [DllImport("user32.dll")]
        public static extern IntPtr GetDC(IntPtr ptr);
        [DllImport("gdi32.dll")]
        public static extern int GetDeviceCaps(
            IntPtr hdc, // handle to DC
            int nIndex // index of capability
        );
        [DllImport("user32.dll", EntryPoint = "ReleaseDC")]
        public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);
        [DllImport("user32.dll")]
        public static extern IntPtr GetDesktopWindow();
public static float GetSreenScale()
        {
            var hdc = Win32.GetDC(Win32.GetDesktopWindow());
            int nWidth = Win32.GetDeviceCaps(hdc, Win32.DESKTOPHORZRES);
            Win32.ReleaseDC(IntPtr.Zero, hdc);
            float f_Scale = (float)nWidth / (float)Screen.PrimaryScreen.Bounds.Width;
            return 1 / f_Scale;
        }
### C# 获取屏幕分辨率的方法 在 C# 中,可以通过多种方式获取屏幕分辨率。以下是常见的两种方法: #### 方法一:使用 `System.Windows.Forms.Screen` 类 这是最简单的方式之一,适用于 Windows Forms 应用程序。 ```csharp using System; using System.Windows.Forms; class Program { static void Main() { // 获取主屏幕的分辨率 int screenWidth = Screen.PrimaryScreen.Bounds.Width; int screenHeight = Screen.PrimaryScreen.Bounds.Height; // 输出分辨率到控制台 Console.WriteLine("屏幕分辨率:{0}x{1}", screenWidth, screenHeight); } } ``` 此代码片段展示了如何利用 `Screen.PrimaryScreen.Bounds` 来获取显示器的宽度和高度[^1]。 #### 方法二:定义独立函数以提高可重用性 如果希望将功能封装在一个单独的函数中,则可以参考以下示例代码: ```csharp using System; using System.Windows.Forms; namespace ScreenResolution { class Program { static void Main(string[] args) { GetScreenResolution(); } static void GetScreenResolution() { // 获取主屏幕的分辨率 int screenWidth = Screen.PrimaryScreen.Bounds.Width; int screenHeight = Screen.PrimaryScreen.Bounds.Height; // 打印分辨率至控制台 Console.WriteLine("Screen Resolution: " + screenWidth + " x " + screenHeight); } } } ``` 这种方法不仅保持了代码结构清晰,还便于后续扩展或修改逻辑[^2]。 #### 高级需求:考虑 DPI 缩放比例的情况 当涉及高 DPI 显示器时,仅依靠基础像素值可能无法满足精确显示的需求。此时需额外处理缩放比例问题。一种常见做法是借助 WinAPI 或第三方工具库完成更复杂的场景支持[^3]。 对于 WPF 开发者来说,在某些特定场合下还需要注意虚拟桌面尺寸以及多屏环境下的适配情况等问题[^4]。 ### 注意事项 - 上述例子均基于 .NET Framework 平台开发;如果是跨平台项目(.NET Core/.NET 5+)则需要注意兼容性和依赖项安装。 - 当前讨论主要围绕单个主显示屏的信息提展开说明,如果有多个监视器连接,则需要遍历所有可用设备列表并分别读其参数。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值