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

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

原文:

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      }  }
posted on
2018-05-26 00:05 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/9091152.html

你可能感兴趣的文章
Python/jquery
查看>>
【BZOJ】【2132】圈地计划
查看>>
Java有没有goto?
查看>>
求不相邻金币相加和的最大值--动态规划1
查看>>
[转][osg]探索未知种族之osg类生物【目录】
查看>>
四十九. Zabbix报警机制 、 Zabbix进阶操作 、 监控案例
查看>>
占小狼的简书博客
查看>>
struts2__action执行顺序
查看>>
php异常处理
查看>>
[xampp] /usr/bin/env: php: No such file or directory
查看>>
细学PHP 10 贴吧-2
查看>>
黑客攻防入门秘籍
查看>>
Swift迎来了1.0 GM 版(2014.09.09)
查看>>
【iOS开发-68】APP下载案例:利用tableView自带的cell布局+缓存池cell复用时注意button状态的检查...
查看>>
《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本
查看>>
Java 编程下实现随机无重复数字功能
查看>>
Android 编程下的代码混淆
查看>>
animation属性
查看>>
页内的模块和组件抽象规划经验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>