C# 获取当前屏幕DPI

简介: 1.通过Graphics类获取 Graphics currentGraphics = Graphics.FromHwnd(new WindowInteropHelper(mainWindow).Handle); double dpixRatio = currentGraphics.DpiX/96; 比如当前屏幕设置DPI设置1.5倍,可以通过如上通过后台获取。

1.通过Graphics类获取

Graphics currentGraphics = Graphics.FromHwnd(new WindowInteropHelper(mainWindow).Handle);
double dpixRatio = currentGraphics.DpiX/96;

比如当前屏幕设置DPI设置1.5倍,可以通过如上通过后台获取。

2.通过Win32-ManagementClass

using (ManagementClass mc = new ManagementClass("Win32_DesktopMonitor"))
{
    using (ManagementObjectCollection moc = mc.GetInstances())
    {

        int PixelsPerXLogicalInch = 0; // dpi for x
        int PixelsPerYLogicalInch = 0; // dpi for y

        foreach (ManagementObject each in moc)
        {
            PixelsPerXLogicalInch = int.Parse((each.Properties["PixelsPerXLogicalInch"].Value.ToString()));
            PixelsPerYLogicalInch = int.Parse((each.Properties["PixelsPerYLogicalInch"].Value.ToString()));
        }
    }
}

 

值得一提的是,有主副屏屏幕的情况下,是获取不了副屏的DPI的!

 

注:屏幕的物理分辨率/真实分辨率/高宽缩放比例,可参考C# API 获取系统DPI缩放倍数跟分辨率大小

 

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
目录
相关文章
|
C# 编解码
WPF C# 多屏情况下,实现窗体显示到指定的屏幕内
原文:WPF C# 多屏情况下,实现窗体显示到指定的屏幕内 针对于一个程序,需要在两个显示屏上显示不同的窗体,(亦或N个显示屏N个窗体),可以使用如下的方式实现。
4963 0
|
C# 开发者
推荐一款C#开源的操作简单、免费的屏幕录制和GIF动画制作神器
推荐一款C#开源的操作简单、免费的屏幕录制和GIF动画制作神器
|
编解码 C# 图形学
C# 获取当前屏幕DPI
原文:C# 获取当前屏幕DPI 1.通过Graphics类获取 Graphics currentGraphics = Graphics.FromHwnd(new WindowInteropHelper(mainWindow).Handle); double dpixRatio = currentGraphics.DpiX/96; 比如当前屏幕设置DPI设置1.5倍,可以通过如上通过后台获取。
2981 0
C# 获取当前屏幕的宽高和位置
原文:C# 获取当前屏幕的宽高和位置 上一篇博客《C# 获取当前屏幕DPI》,介绍了如何获取当前屏幕的DPI设置 本章主要介绍如何获取当前窗口所在屏幕的信息 当前屏幕信息 如果当前是单屏幕,可以直接获取主屏幕 var primaryScreen = Screen.
1294 0
|
C# 编解码 图形学
C# 获取当前屏幕的宽高和位置
上一篇博客《C# 获取当前屏幕DPI》,介绍了如何获取当前屏幕的DPI设置 本章主要介绍如何获取当前窗口所在屏幕的信息 当前屏幕信息 如果当前是单屏幕,可以直接获取主屏幕 var primaryScreen = Screen.
2048 0
C# 获取屏幕的大小
WinForm: int iActulaWidth = Screen.PrimaryScreen.Bounds.Width; int iActulaHeight = Screen.
874 0
|
C# 数据安全/隐私保护
C#弹出式窗口设计及窗体居屏幕中间
一、功能需求: 某个弹出的窗体可以输入密码,且居屏幕中间。 二、解决方案: 1、解决弹出窗体居中的问题 Form 有个方便的属性,StartPoint可以用来设置Form的特殊位置。
985 0
|
8天前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
20 3