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

本文共 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://xleoa.baihongyu.com/

你可能感兴趣的文章
营业税转增值税改革到底有什么好处?
查看>>
类的封装性和继承
查看>>
关于网页前端的技术分享
查看>>
Eclipes批量创建文件夹
查看>>
矩阵的最小路径和二维动态规划的空间压缩
查看>>
爽肤水
查看>>
Pycharm下tensorflow导入错误
查看>>
装饰器和单例模式
查看>>
LINUX7安装Oracle11g单实例小结
查看>>
webStorage
查看>>
Linux_FTP服务
查看>>
iOS开发之SceneKit框架--SCNAction.h
查看>>
iOS开发之SceneKit框架--加载多个模型.dae/.scn文件
查看>>
iOS中block的探究
查看>>
Linux程序编写shell script的格式
查看>>
kali 执行apt-get upgrade后,终端无法打开的解决办法
查看>>
减低页面加载时间的方法
查看>>
BZOJ 2115: [Wc2011] Xor
查看>>
3054 高精度练习-文件操作
查看>>
[转]POI大数据量Excel解决方案
查看>>