获取系统DPI、系统显示比例等
1 using System;
2 using System.Drawing;
3 using System.Runtime.InteropServices;
4
5 namespace XYDES
6 {
7 public class PrimaryScreen
8 {
9 #region Win32 API
10 [DllImport("user32.dll")]
11 static extern IntPtr GetDC(IntPtr ptr);
12 [DllImport("gdi32.dll")]
13 static extern int GetDeviceCaps(
14 IntPtr hdc, // handle to DC
15 int nIndex // index of capability
16 );
17 [DllImport("user32.dll", EntryPoint = "ReleaseDC")]
18 static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);
19 #endregion
20 #region DeviceCaps常量
21 const int HORZRES = 8;
22 const int VERTRES = 10;
23 const int LOGPIXELSX = 88;
24 const int LOGPIXELSY = 90;
25 const int DESKTOPVERTRES = 117;
26 const int DESKTOPHORZRES = 118;
27 #endregion
28
29 #region 属性
30 /// <summary>
31 /// 获取屏幕分辨率当前物理大小
32 /// </summary>
33 public static Size WorkingArea
34 {
35 get {
36 IntPtr hdc = GetDC(IntPtr.Zero);
37 Size size = new Size();
38 size.Width = GetDeviceCaps(hdc, HORZRES);
39 size.Height = GetDeviceCaps(hdc, VERTRES);
40 ReleaseDC(IntPtr.Zero, hdc);
41 return size;
42 }
43 }
44 /// <summary>
45 /// 当前系统DPI_X 大小 一般为96
46 /// </summary>
47 public static int DpiX
48 {
49 get
50 {
51 IntPtr hdc = GetDC(IntPtr.Zero);
52 int DpiX = GetDeviceCaps(hdc, LOGPIXELSX );
53 ReleaseDC(IntPtr.Zero, hdc);
54 return DpiX;
55 }
56 }
57 /// <summary>
58 /// 当前系统DPI_Y 大小 一般为96
59 /// </summary>
60 public static int DpiY
61 {
62 get
63 {
64 IntPtr hdc = GetDC(IntPtr.Zero);
65 int DpiX = GetDeviceCaps(hdc,LOGPIXELSY);
66 ReleaseDC(IntPtr.Zero, hdc);
67 return DpiX;
68 }
69 }
70 /// <summary>
71 /// 获取真实设置的桌面分辨率大小
72 /// </summary>
73 public static Size DESKTOP
74 {
75 get
76 {
77 IntPtr hdc = GetDC(IntPtr.Zero);
78 Size size = new Size();
79 size.Width = GetDeviceCaps(hdc,DESKTOPHORZRES );
80 size.Height = GetDeviceCaps(hdc, DESKTOPVERTRES);
81 ReleaseDC(IntPtr.Zero, hdc);
82 return size;
83 }
84 }
85
86 /// <summary>
87 /// 获取宽度缩放百分比
88 /// </summary>
89 public static float ScaleX
90 {
91 get
92 {
93 IntPtr hdc = GetDC(IntPtr.Zero);
94 int t = GetDeviceCaps(hdc, DESKTOPHORZRES);
95 int d = GetDeviceCaps(hdc, HORZRES);
96 float ScaleX = (float)GetDeviceCaps(hdc, DESKTOPHORZRES) / (float)GetDeviceCaps(hdc, HORZRES);
97 ReleaseDC(IntPtr.Zero, hdc);
98 return ScaleX;
99 }
100 }
101 /// <summary>
102 /// 获取高度缩放百分比
103 /// </summary>
104 public static float ScaleY
105 {
106 get
107 {
108 IntPtr hdc = GetDC(IntPtr.Zero);
109 float ScaleY = (float)(float)GetDeviceCaps(hdc, DESKTOPVERTRES) / (float)GetDeviceCaps(hdc, VERTRES);
110 ReleaseDC(IntPtr.Zero, hdc);
111 return ScaleY;
112 }
113 }
114 #endregion
115 }
116 }
转载于:https://www.cnblogs.com/bjxingch/articles/9960423.html
获取系统DPI、系统显示比例等的更多相关文章
- C# API 获取系统DPI缩放倍数跟分辨率大小
原文:C# API 获取系统DPI缩放倍数跟分辨率大小 using System; using System.Drawing; using System.Runtime.InteropServices ...
- WPF 获取系统 DPI 的多种方法
原文:WPF 获取系统 DPI 的多种方法 WPF 获取系统 DPI 的多种方法 由于 WPF 的尺寸单位和系统的 DPI 相关,我们有时需要获取 DPI 值来进行一些界面布局的调整,本文汇总了一些 ...
- 【转载】Windows 10系统默认将画面显示比例调整至125%或150%,最高分辨率已经达到3840×2160(4K)这一级别。
高分屏打开软件界面模糊?不会设置太浪费 2017-08-31 19:37 抹又重彩 现在有好多朋友都喜欢并买了高分屏笔记本电脑.高分屏笔记本就是配有高分辨率屏幕的笔记本.为了给用户带来更好的视觉体验, ...
- 【VC++技术杂谈002】打印技术之获取及设置系统默认打印机
本文主要介绍如何获取以及设置系统的默认打印机. 1.获取系统中的所有打印机 获取系统中的所有打印机可以使用EnumPrinters()函数,该函数可以枚举全部的本地.网络打印机信息.其函数原型为: B ...
- 第六篇 ANDROID窗口系统机制之显示机制
第六篇 ANDROID窗口系统机制之显示机制 ANDROID的显示系统是整个框架中最复杂的系统之一,涉及包括窗口管理服务.VIEW视图系统.SurfaceFlinger本地服务.硬件加速等.窗口管理服 ...
- 关于windows系统DPI增大导致字体变大的原因分析
最近再学习WPF开发,其中提到一个特性“分辨率无关性”,主要功能就是实现开发的桌面程序在不同分辨率的电脑上显示时,会根据系统的DPI自动进行UI的缩放,从而不会导致应用程序的失真. 这个里面就提到了个 ...
- 获取指定的系统路径 SHGetSpecialFolderPath
1.获取桌面的系统路径 TCHAR szLink[MAX_PATH + ] = { }; SHGetSpecialFolderPath(,szLink,CSIDL_DESKTOPDIRECTORY,) ...
- 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区 作者:njchenyi [字体:大 中 小] 我是先安装了Ubuntu 12.04 Server,然后 ...
- 【Qt编程】基于Qt的词典开发系列<十一>系统托盘的显示
本文主要讨论Qt中的系统托盘的设置.系统托盘想必大家都不陌生,最常用的就是QQ.系统托盘以简单.小巧的形式能让人们较快的打开软件.废话不多说,下面开始具体介绍. 首先,新建一个Qt Gui项目,类型选 ...
- JAVA获取系统信息以及系统时间
在做测试的时候,经常需要获取系统信息,并且用获取到的系统时间给生成的报告取名字. 以下代码实在TestNG展示的,没有Test NG的话需要些一个main方法. import java.net.Ine ...
随机推荐
- 1054 The Dominant Color (20分)(水)
Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of i ...
- 1031 Hello World for U (20分)
Given any string of N (≥) characters, you are asked to form the characters into the shape of U. For ...
- PTA数据结构与算法题目集(中文) 7-6
PTA数据结构与算法题目集(中文) 7-6 7-6 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时, ...
- 搭建DHProxy服务器
集群与存储 HAProxy简介 ...
- 邮件服务TLS/SSL,CA证书
邮件服务TLS/SSL,CA证书 案例1:OpenSSL及证书服务 案例2:邮件TLS/SSL加密通信 1 案例1:OpenSSL及证书服务 1.1 问题 本案例要求熟悉OpenSSL工具的基本使用 ...
- adb工作常用命令
adb devices 查看手机名 adb shell链接手机 dumpsys window windows |grep -i current 打开软件,查看软件入口,和包名,白色为包名,红框为包入口 ...
- Tcl编成第二天,set与unset
代码如下: #!/usr/bin/tclsh set value "one" puts $value unset value puts $value set表示创建一个变量第一个参 ...
- Linux 用户管理篇(一)
查看当前在线的用户 who 切换不同用户工作界面 ctrl + alt + [F1 - F6] 切换图形界面 ctrl + alt + F7 注消用户 exit ...
- MySQL InnoDB存储引擎体系架构 —— 索引高级
转载地址:https://mp.weixin.qq.com/s/HNnzAgUtBoDhhJpsA0fjKQ 世界上只两件东西能震撼人们的心灵:一件是我们心中崇高的道德标准:另一件是我们头顶上灿烂的星 ...
- P4015 运输问题【zkw费用流】
输入输出样例 输入 #1复制 2 3 220 280 170 120 210 77 39 105 150 186 122 输出 #1复制 48500 69140zuixiaofeiyo 说明/提示 1 ...