public class Screen
{
/// Primary Screen #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 = ;
const int VERTRES = ;
const int LOGPIXELSX = ;
const int LOGPIXELSY = ;
const int DESKTOPVERTRES = ;
const int DESKTOPHORZRES = ;
#endregion #region 属性
/// <summary>
/// 获取屏幕分辨率当前物理大小
/// </summary>
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;
}
}
/// <summary>
/// 当前系统DPI_X 大小 一般为96
/// </summary>
public static int DpiX
{
get
{
IntPtr hdc = GetDC(IntPtr.Zero);
int DpiX = GetDeviceCaps(hdc, LOGPIXELSX);
ReleaseDC(IntPtr.Zero, hdc);
return DpiX;
}
}
/// <summary>
/// 当前系统DPI_Y 大小 一般为96
/// </summary>
public static int DpiY
{
get
{
IntPtr hdc = GetDC(IntPtr.Zero);
int DpiX = GetDeviceCaps(hdc, LOGPIXELSY);
ReleaseDC(IntPtr.Zero, hdc);
return DpiX;
}
}
/// <summary>
/// 获取真实设置的桌面分辨率大小
/// </summary>
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;
}
} /// <summary>
/// 获取宽度缩放百分比
/// </summary>
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;
}
}
/// <summary>
/// 获取高度缩放百分比
/// </summary>
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
}

最新文章

  1. PowerBuilder笔记
  2. pragma伪指令
  3. HBase Java简单示例--转载
  4. HW5.34
  5. MAC Python环境配置以及安装Pycharm 5.4.0
  6. 知识库系统confluence5.8.10 安装与破解
  7. 武汉科技大学ACM :1008: 零起点学算法58——开灯问题
  8. 高质量程序设计指南C/C++语言——内存管理
  9. CentOS本地yum源配置
  10. C语言第一次博客作业 陈张鑫
  11. 201621123040《Java程序设计》第4周学习总结
  12. tcp与ip协议的区别
  13. SSIS - 2.使用脚本任务弹出对话框
  14. Exception in thread &quot;main&quot; java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
  15. JavaScript 组数去重demo
  16. 尚硅谷面试第一季-17Redis 在项目中的使用场景
  17. .NET开发微信公众号之创建自定义菜单
  18. vc++ 在程序中运行另一个程序的方法
  19. ||在oracle数据库中起到字符串拼接的作用
  20. 【Java】PreparedStatement VS Statement

热门文章

  1. Docker容器Centos不能使用systemctl命令问题
  2. java遍历统计一个文件夹中所有文件单词出现次数
  3. django cookie session 自定义分页
  4. TCP 与 UDP 浅谈
  5. 为什么MYSQL分页时使用limit+ order by会出现数据重复问题
  6. SQLServer 数据库索引碎片
  7. 刷题22. Generate Parentheses
  8. 如何通过注解方式给项目添加Swagger功能
  9. C++-POJ3735-Training little cats[矩阵乘法][快速幂]
  10. 51Nod 1068 Bash游戏 V3 (这规律不好找)