返回顶部
首页 > 资讯 > 精选 >C#如何获取Windows10屏幕缩放比例
  • 604
分享到

C#如何获取Windows10屏幕缩放比例

2023-06-22 01:06:16 604人浏览 八月长安
摘要

这篇文章主要讲解了“C#如何获取windows10屏幕缩放比例”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何获取Windows10屏幕缩放比例”吧!现在1920x1080以

这篇文章主要讲解了“C#如何获取windows10屏幕缩放比例”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何获取Windows10屏幕缩放比例”吧!

现在1920x1080以上分辨率的高分屏电脑渐渐普及了。我们会在Windows的显示设置里看到缩放比例的设置。在Windows桌面客户端的开发中,有时会想要精确计算窗口的面积或位置。然而在默认情况下,无论winforms的Screen.Bounds.Width属性还是WPF中SystemParameters.PrimaryScreenWidth属性,以下图举例,将会返回除以150%的数值1280。而不是真实的物理分辨率1920。

C#如何获取Windows10屏幕缩放比例

接下来介绍如何获取Display resolution中显示的实际分辨率。通过如下Win32 api的调用:

[DllImport("gdi32.dll", EntryPoint = "GetDeviceCaps", SetLastError = true)]        public static extern int GetDeviceCaps(IntPtr hdc, int nIndex);

该方法可以获取设备的硬件信息,可以通过第二个参数nIndex来指定要查询的具体信息。例如我们要用到的以像素为单位的桌面高度DESKTOPVERTRES。

enum DeviceCap        {            VERTRES = 10,            PHYSICALWIDTH = 110,            SCALINGFACTORX = 114,            DESKTOPVERTRES = 117,            // Http://pinvoke.net/default.aspx/gdi32/GetDeviceCaps.html        }

在获得物理像素高度后,通过计算不难得出屏幕的缩放比列。

private static double GetScreenScalingFactor()        {            var g = Graphics.FromHwnd(IntPtr.Zero);            IntPtr desktop = g.GetHdc();            var physicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);            var screenScalingFactor =                 (double)physicalScreenHeight / Screen.PrimaryScreen.Bounds.Height;            //SystemParameters.PrimaryScreenHeight;            return screenScalingFactor;        }

C#如何获取Windows10屏幕缩放比例

在获取屏幕缩放比例后,诸如通过Graphics类的CopyFromScreen方法来截屏,或者精确控制窗口大小和位置才得以正确实现。
其实在WinFORMs程序中,我们还有更简单的方式来实现类似效果。即在工程中添加app.manifest文件,将<dipAware>节点的值设为true。这样修改后,Screen.PrimaryScreen.Bounds将获得实际的物理分辨率尺寸,同时你还会发现WinForms程序不糊了。这是因为Windows默认WinForms程序不支持DPI感知,在高分屏下就直接粗暴的把窗体放大。

  <application xmlns="urn:schemas-microsoft-com:asm.v3">    <windowsSettings>      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>    </windowsSettings>  </application>

该设置对WPF无效,WPF默认支持DPI感知功能。而从UWP开始Windows客户端技术全面支持高分屏即高DPI缩放。老旧应用程序不肯升级,以至无法支持高分屏,这锅某软背着挺冤的……
所以同学们,现在开始全面转向WinUI 3吧,这货是这么些年某软兜兜转转,客户端技术集大成者。用Windows APP SDK创建Unpackged App时,恍惚间仿佛回到了在XP上装.NET Runtime的时光。
因为GitHub访问时常抽风,我将示例代码在gitee上也同步了一份:

How to get Windows display scale using C#. (github.com)
How to get Windows display scale using C#. (gitee.com)

感谢各位的阅读,以上就是“C#如何获取Windows10屏幕缩放比例”的内容了,经过本文的学习后,相信大家对C#如何获取Windows10屏幕缩放比例这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C#如何获取Windows10屏幕缩放比例

本文链接: https://lsjlt.com/news/301727.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#如何获取Windows10屏幕缩放比例
    这篇文章主要讲解了“C#如何获取Windows10屏幕缩放比例”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何获取Windows10屏幕缩放比例”吧!现在1920x1080以...
    99+
    2023-06-22
  • C#获取Windows10屏幕缩放比例的操作方法
    现在1920x1080以上分辨率的高分屏电脑渐渐普及了。我们会在Windows的显示设置里看到缩放比例的设置。在Windows桌面客户端的开发中,有时会想要精确计算窗口的面...
    99+
    2024-04-02
  • Win10如何自定义缩放屏幕比例
    小编给大家分享一下Win10如何自定义缩放屏幕比例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体方法如下:首先,鼠标点击屏幕左下角的 Win 图标。然后,在弹...
    99+
    2023-06-12
  • Android图片等比例缩放和填充屏幕效果
    本文实例为大家分享了Android图片等比例缩放和填充屏幕的具体代码,供大家参考,具体内容如下第一种方法:在ImageView的t同事设置两个属性 android:adjustViewBounds="true" android:scaleT...
    99+
    2023-05-30
    android 图片等比缩放 填充屏幕
  • jquery如何获取屏幕宽高
    使用jquery获取屏幕宽高的方法:1.使用$(window).width()获取当前窗口可视区域宽度;2.使用$(window).height()获取当前窗口可视区域高度;3.使用$(document).width()获取当前窗口文档对象...
    99+
    2024-04-02
  • win11缩放比例如何修改
    今天小编给大家分享一下win11缩放比例如何修改的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。最佳缩放比例win11:答:w...
    99+
    2023-07-02
  • vue如何获取屏幕的宽度
    在vue中获取屏幕宽度的方法有:1.使用document.documentElement方法获取;2.在watch中实时监听;3.使用mounted函数获取;具体方法如下:使用document.documentElement方法获取屏幕的宽...
    99+
    2024-04-02
  • 详解C#如何实现屏幕放大和取色功能
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-15
    C#屏幕放大 取色 C#屏幕 放大 C#屏幕 取色
  • C#如何实现屏幕取词法
    这篇文章将为大家详细讲解有关C#如何实现屏幕取词法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。金山词霸组件实现C#屏幕取词 在金山词霸中2005中带了一个XdictGrb.dll,添加引用using&n...
    99+
    2023-06-17
  • 如何使用VBS获取屏幕分辨率
    这篇文章主要为大家展示了“如何使用VBS获取屏幕分辨率”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用VBS获取屏幕分辨率”这篇文章吧。一种是WMI中的Win32_DesktopMonit...
    99+
    2023-06-08
  • autojs如何获取手机屏幕分辨率
    在Auto.js中,可以使用`device.width`和`device.height`来获取当前手机屏幕的分辨率。示例代码如下:`...
    99+
    2023-08-23
    autojs
  • HTML5 Canvas如何实现图片缩放比例
    小编给大家分享一下HTML5 Canvas如何实现图片缩放比例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! drawImage方法的又一变种是增加了两个用于控制图像在canvas中缩放...
    99+
    2024-04-02
  • 基于C#如何实现屏幕取色器
    本篇内容主要讲解“基于C#如何实现屏幕取色器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于C#如何实现屏幕取色器”吧!实践过程效果代码public partial cla...
    99+
    2023-07-04
  • 怎么使用C++和Direct3D获取屏幕截图并根据传入分辨率进行缩放图片大小
    这篇文章主要介绍“怎么使用C++和Direct3D获取屏幕截图并根据传入分辨率进行缩放图片大小”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用C++和Direct3D获取屏幕截图并根据传入分辨...
    99+
    2023-07-05
  • linux中如何使用gnome-screenshot获取屏幕快照
    这篇文章主要介绍linux中如何使用gnome-screenshot获取屏幕快照,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!关于 Gnome-screenshotGnome-screenshot 是一款 GNOME...
    99+
    2023-06-16
  • css如何改变图片大小按比例缩放
    在css中设置图片大小按比例缩放的方法:1.首先,创建img标签,插入图片;2.使用width和height属性设置图片大小按比例缩放;在css中设置图片大小按比例缩放的方法首先,在页面中创建一个img标签,并插入图片;<!DOCTY...
    99+
    2024-04-02
  • win8屏幕显示比例如何调整操作图文
      首先在桌面上右击鼠标选择“屏幕分辨率”从而调出屏幕分辨率设置窗口。一般情况下系统会根据显示器自适应分辨率,但这种情况可能并不适合老人和小孩,因为字太小不容易看清。这是我们就需要拉...
    99+
    2022-06-04
    屏幕 比例 操作
  • 使用C++和Direct3D(d3d)获取屏幕截图并根据传入分辨率进行缩放图片大小(最新推荐)
    目录一,函数清单1.Direct3DCreate9 函数2.IDirect3D9::CreateDevice 方法3.IDirect3DDevice9::GetDispla...
    99+
    2023-05-14
    C++ Direct3D屏幕截图 C++屏幕分辨率
  • 如何利用layui等比例放大或缩小图片
    这篇文章主要讲解了“如何利用layui等比例放大或缩小图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用layui等比例放大或缩小图片”吧!HTML...
    99+
    2024-04-02
  • CSS中如何使用calc()获取当前可视屏幕高度
    这篇“CSS中如何使用calc()获取当前可视屏幕高度”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“CSS中如何使用calc()获取当前可视屏幕高度”,小编整理了以下知识点,请大家跟着小编的步...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作