首页 > 编程语言 >C# winform 获取屏幕分辨率缩放率,获取屏幕设置分辨率

C# winform 获取屏幕分辨率缩放率,获取屏幕设置分辨率

时间:2023-12-04 13:11:06浏览次数:30  
标签:GetDeviceCaps 缩放 分辨率 获取 设置 var 屏幕

解决问题:1)当需要抓取显示器分辨率的缩放比例时。2)当屏幕显示缩放设置不等于100%,导致分辨率改变,Screen.PrimaryScreen.Bounds抓取不到实际设置的分辨率时。

解决方案:使用GetDeviceCaps函数。

        /// <summary>
        /// 设备数据函数
        /// </summary>
        /// <param name="hdc"></param>
        /// <param name="nIndex"></param>
        /// <returns></returns>
        [DllImport("gdi32.dll", EntryPoint = "GetDeviceCaps", SetLastError = true)]
        public static extern int GetDeviceCaps(IntPtr hdc, int nIndex);

        private static double GetScreenScalingFactor()
        {
            var g = Graphics.FromHwnd(IntPtr.Zero);
            IntPtr desktop = g.GetHdc();
            var physicalScreenHeight = GetDeviceCaps(desktop, 117);//硬件显示器分辨率实际设置的高
            var physicalScreenWidth = GetDeviceCaps(desktop, 118);//硬件显示器分辨率实际设置的宽
            var screenScalingFactor = (double)physicalScreenHeight / Screen.PrimaryScreen.Bounds.Height;//将实际的高除以抓取的换算过的高就等于缩放率,同理当需要获取实际宽高时,直接获取函数结果即可
            return screenScalingFactor;
        }

 

标签:GetDeviceCaps,缩放,分辨率,获取,设置,var,屏幕
From: https://www.cnblogs.com/blossomwei/p/17874698.html

相关文章

  • Servlet Session基本概念和使用方法,获取Session对象: 在Servlet中,可以使用HttpServletR
    ServletSession基本概念和使用方法,获取Session对象:在Servlet中,可以使用HttpServletRequest对象的getSession()方法来获取当前请求的Session对象目录Session介绍Session使用步骤Session示例LoginServletsuccess.jspfailure.jspSession介绍Session是Web开发中的一种机......
  • 获取HttpServletRequest、HttpServletResponse的几种方式
    获取HttpServletRequest、HttpServletResponse的几种方式获取HttpServletRequest、HttpServletResponse的几种方式1、可以封装为静态方法ServletRequestAttributesservletRequestAttributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();H......
  • java 捕获异常Exception 获取异常信息的方法 e.toString() e.getMessage() e.printSta
    Java异常中e.getMessage()和e.toString()e.printStackTrace()的区别e.getMessage():打印异常的原因e.toString():打印异常类型和异常的原因e.printStackTrace():打印完整的异常堆栈信息  总结e.getMessage()和e.toString()方法:打印的异常信息太少,没有具体......
  • 抖音商品详情接口在电商行业中的重要性及实时数据获取实现
    一、引言抖音作为当下最热门的短视频平台之一,拥有庞大的用户群体和活跃度,为电商行业带来了巨大的商业机会。抖音商品详情接口作为连接抖音平台和电商系统的关键纽带,具有重要的作用。本文将深入探讨抖音商品详情接口在电商行业中的重要性,并介绍如何通过代码实现实时数据获取,帮助电商......
  • O(1) 时间插入、删除和获取随机元素
    O(1)时间插入、删除和获取随机元素难度:简单|中等√|困难-------------------用时:18分钟(第一次)-------------------作题日期:2023-12-03ps:本人理解有限,以下是自我理解,官方和大佬有更完整和详细的解析!!!题目描述题目描述实现RandomizedSet类:Randomi......
  • 获取国内城市编码API接口
    一、获取国内城市编码接口一款免费的帮助你获取取国内城市编码的接口二、使用步骤1、接口重要提示:建议使用https协议,当https协议无法使用时再尝试使用http协议请求方式:GEThttps://luckycola.com.cn/weather/geo2、请求参数序号参数是否必须说明1colaKey......
  • java获取multipartfile的编码
    Java获取MultipartFile的编码在Java开发中,我们经常需要处理文件上传功能。Spring框架提供了MultipartFile接口来处理文件上传,它是对文件上传的封装,提供了一系列的方法来处理文件的内容、类型、大小等。在某些情况下,我们可能需要获取MultipartFile的编码信息,比如判断上传文件的编......
  • java获取linux目录下的文件
    Java获取Linux目录下的文件在Java中,我们可以使用File类来操作文件和目录。在Linux系统中,我们可以使用ls命令来列出目录下的文件,然后通过Java代码来获取这些文件的信息。列出目录下的文件我们可以使用ProcessBuilder来执行Linux命令,并通过Java代码获取命令的输出结果。下面是一个......
  • java获取7天后的时间戳
    Java获取7天后的时间戳概述在Java开发中,经常会遇到需要获取指定日期之后或之前的时间戳的需求。本文将教会刚入行的小白如何使用Java编写代码获取7天后的时间戳。流程以下是获取7天后时间戳的流程:步骤描述1获取当前日期时间2将当前日期时间加上7天3将加上7......
  • 如何获取服务码
    如何获取服务码注意:以下教程均建立在路由已绑定云平台的情况下。如设备未绑定云平台,请先绑定爱快云。如何绑定爱快云:https://www.ikuai8.com/zhic/ymgn/lyym/xtsz/c542c.html服务码可通过爱快路由器、爱快云、爱快e云进行获取,需要先绑定爱快云才可获取服务码。 方法一:路......