C# API 获取系统DPI缩放倍数跟分辨率大小

简介: 原文:C# API 获取系统DPI缩放倍数跟分辨率大小 using System; using System.Drawing; using System.
原文: C# API 获取系统DPI缩放倍数跟分辨率大小

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 属性  
        /// <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  
    }  
}  


目录
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
C# 6.0+JavaScript云LIS系统源码  云LIS实验室信息管理新型解决方案
云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序,可协助区域内所有临床实验室相互协调并完成日常检验工作,对区域内的检验数据进行集中管理和共享,通过对质量控制的管理,最终实现区域内检验结果互认。其目标是以医疗服务机构为主体,以医疗资源和检验信息共享为目标,集成共性技术及医疗服务关键技术,建立区域协同检验,最大化利用有限的医疗卫生资源。
116 1
|
2月前
|
前端开发 Java C#
java/C#语言开发的医疗信息系统11套源码
java/C#语言开发的医疗信息系统11套源码
62 2
|
5天前
|
存储 Oracle 关系型数据库
PACS源码,C#语言数字医学影像系统成品源码
**数字医学影像系统(RIS/PACS)**采用C#开发,基于C/S架构,配Oracle数据库,具备自主版权,适用于项目实施。系统包含分诊、超声、放射、内镜、病理等工作站,支持基本信息维护、报表查询和系统维护。功能亮点有:WorkList管理、影像采集传输、存储检索、图像处理、多序列浏览、流程控制、报告录入与审核、支持多种影像设备及高级影像处理。RIS与PACS数据库同步,并集成HIS、电子病历等系统接口。全面遵循DICOM3.0标准。
PACS源码,C#语言数字医学影像系统成品源码
|
1月前
|
开发框架 前端开发 .NET
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
集成于VS 2019,EXT.NET前端和ASP.NET后端,搭配MSSQL 2018数据库。系统覆盖样品管理、数据分析、报表和项目管理等实验室全流程。应用广泛,包括生产质检(如石化、制药)、环保监测、试验研究等领域。随着技术发展,现代LIMS还融合了临床、电子实验室笔记本和SaaS等功能,以满足复杂多样的实验室管理需求。
40 3
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
|
2天前
|
数据采集 监控 BI
C#实验室检验LIS信息系统源码 微生物检验、质控维护
LIS系统的主要目标是为检验室开展检验工作提供更加有效的系统支持。该系统将尽量减少以人工操作的方式来实现信息转移,减少在接收检验项目、报告结果和保存记录等工作中可能会出现的人为误差,为检验结果查询提供更有效的方法,节省了管理信息所需的琐碎时间和精力。为实验室技术人员提供智能化的运行模式,使处理诸如按照规程审核检验结果、取消检验项目、分析、处理存在重大疑问的检验结果、执行特殊的命令和处理质量控制等问题更轻松自如,这将使检验人员更快地获得准确清晰的检验结果。为临床医护人员提供在线设施,使他们可以及时准确地获得相关实验室信息。确保检验结果的可靠性和准确性,利用实验室管理信息系统的仪器监控和质量控制,
7 0
|
14天前
|
C#
C#中使用IntPtr.Size属性来判断当前系统是32位还是64位
这段代码首先检查 `IntPtr.Size`的值,如果是4,则输出"当前系统是32位";如果是8,则输出"当前系统是64位";如果都不是,就输出"未知系统位数"。
9 0
|
21天前
|
API 开发工具
支付系统17------支付宝支付-----API预览以及签名验签说明,出现支付宝扫描二维码的操作,支付完成之后,查询订单的状态,支付成功之后,需要退款调用的接口,退款状态的接口,完成退款之后,通知
支付系统17------支付宝支付-----API预览以及签名验签说明,出现支付宝扫描二维码的操作,支付完成之后,查询订单的状态,支付成功之后,需要退款调用的接口,退款状态的接口,完成退款之后,通知
|
2月前
|
存储 运维 BI
基于C#-VC-MSSQL开发的全套PACS系统源码 3D PACS系统源码:可实现医学影像获取、存档、观片、处理、打印多项应用
PACS的功能价值在于通过连接不同的影像设备,存储与管理图像,图像的调用与后处理,实现资源共享,降低成本,达到提高工作效率、提升医疗水平的目地;
37 1
基于C#-VC-MSSQL开发的全套PACS系统源码  3D PACS系统源码:可实现医学影像获取、存档、观片、处理、打印多项应用
|
2月前
|
安全 API C#
C#.Net筑基-类型系统②常见类型--枚举Enum
枚举(enum)是C#中的一种值类型,用于创建一组命名的整数常量。它们基于整数类型(如int、byte等),默认为int。枚举成员可指定值,未指定则从0开始自动递增。默认值为0。枚举可以与整数类型互相转换,并可通过`[Flags]`特性表示位域,支持位操作,用于多选场景。`System.Enum`类提供了如`HasFlag`、`GetName`等方法进行枚举操作。
|
2月前
|
编译器 C#
C#.Net筑基-类型系统②常见类型 --record是什么类型?
`record`在C#中是一种创建简单、只读数据结构的方式,常用于轻量级数据传输。它本质上是类(默认)或结构体的快捷形式,包含自动生成的属性、`Equals`、`ToString`、解构赋值等方法。记录类型可以继承其他record或接口,但不继承普通类。支持使用`with`语句创建副本。例如,`public record User(string Name, int Age)`会被编译为包含属性、相等比较和`ToString()`等方法的类。记录类型提供了解构赋值和自定义实现,如密封的`sealed`记录,防止子类重写。