博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# API 获取系统DPI缩放倍数跟分辨率大小
阅读量:6710 次
发布时间:2019-06-25

本文共 3815 字,大约阅读时间需要 12 分钟。

原文:

using System;  using System.Drawing;  using System.Runtime.InteropServices;    namespace XYDES  {      public class PrimaryScreen      {          #region Win32 API                  [DllImport("user32.dll")]                   static extern IntPtr GetDC(IntPtr ptr);                  [DllImport("gdi32.dll")]                   static extern int GetDeviceCaps(                  IntPtr hdc, // handle to DC                  int nIndex // index of capability                  );                  [DllImport("user32.dll", EntryPoint = "ReleaseDC")]                   static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);          #endregion          #region DeviceCaps常量                  const int HORZRES = 8;                  const int VERTRES = 10;                  const int LOGPIXELSX = 88;                  const int LOGPIXELSY = 90;                  const int DESKTOPVERTRES = 117;                  const int DESKTOPHORZRES = 118;          #endregion           #region 属性          ///           /// 获取屏幕分辨率当前物理大小          ///              public static Size WorkingArea              {                  get {                      IntPtr hdc = GetDC(IntPtr.Zero);                      Size size = new Size();                      size.Width = GetDeviceCaps(hdc, HORZRES);                      size.Height = GetDeviceCaps(hdc, VERTRES);                      ReleaseDC(IntPtr.Zero, hdc);                      return size;                      }              }          ///              /// 当前系统DPI_X 大小 一般为96          ///               public static int DpiX              {                  get                  {                      IntPtr hdc = GetDC(IntPtr.Zero);                      int DpiX = GetDeviceCaps(hdc, LOGPIXELSX );                      ReleaseDC(IntPtr.Zero, hdc);                      return DpiX;                  }              }          ///           /// 当前系统DPI_Y 大小 一般为96          ///               public static int DpiY              {                  get                  {                      IntPtr hdc = GetDC(IntPtr.Zero);                      int DpiX = GetDeviceCaps(hdc,LOGPIXELSY);                      ReleaseDC(IntPtr.Zero, hdc);                      return DpiX;                  }              }          ///               /// 获取真实设置的桌面分辨率大小          ///               public static Size DESKTOP              {                  get                  {                      IntPtr hdc = GetDC(IntPtr.Zero);                      Size size = new Size();                      size.Width = GetDeviceCaps(hdc,DESKTOPHORZRES );                      size.Height = GetDeviceCaps(hdc, DESKTOPVERTRES);                      ReleaseDC(IntPtr.Zero, hdc);                      return size;                      }              }                ///               /// 获取宽度缩放百分比              ///               public static float ScaleX              {                  get                  {                      IntPtr hdc = GetDC(IntPtr.Zero);                      int t = GetDeviceCaps(hdc, DESKTOPHORZRES);                      int d = GetDeviceCaps(hdc, HORZRES);                      float ScaleX = (float)GetDeviceCaps(hdc, DESKTOPHORZRES) / (float)GetDeviceCaps(hdc, HORZRES);                       ReleaseDC(IntPtr.Zero, hdc);                      return ScaleX;                  }              }              ///               /// 获取高度缩放百分比              ///               public static float ScaleY              {                  get                  {                      IntPtr hdc = GetDC(IntPtr.Zero);                      float ScaleY = (float)(float)GetDeviceCaps(hdc, DESKTOPVERTRES) / (float)GetDeviceCaps(hdc, VERTRES);                      ReleaseDC(IntPtr.Zero, hdc);                      return ScaleY;                  }              }         #endregion      }  }

转载地址:http://sbalo.baihongyu.com/

你可能感兴趣的文章
视达配色教程8 蓝色的性格是什么样的
查看>>
JsonCpp的简单使用方法
查看>>
boost::asio::io_context类
查看>>
LeapMotion Demo3
查看>>
数据视图
查看>>
优化WPF 3D性能
查看>>
C# 集合已修改 可能无法执行枚举操作 zz
查看>>
Sword protobuf学习四
查看>>
oracle实用sql之将逗号分割的字符串分割多个列
查看>>
leetcode 4. Median of Two Sorted Arrays
查看>>
前端建立一个本地服务器:browser-sync
查看>>
php的类型运算符instanceof(用于确定一个 PHP 变量是否属于某一类 class 的实例)
查看>>
VMWare Station 问题汇总
查看>>
JQuery判断input是否被禁用
查看>>
ftp、ssh
查看>>
SCSI接口和SAS接口的区别
查看>>
How to install maps and addons (.VPK)
查看>>
解决Android中的ERROR: the user data image is used by another emulator. aborting的方法
查看>>
电子书下载:Metro Revealed Building Windows 8 apps with XAML and C#.
查看>>
jQuery相册插件(开源下载)
查看>>