小墨の博客

梦想需要付诸行动,否则只能是梦

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  
    }  
}

参考:https://blog.csdn.net/gd_csdn/article/details/79485468

张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:508
    • 页面总数:20
    • 分类总数:92
    • 标签总数:208
    • 评论总数:61
    • 浏览总数:225323

    | | |
    | |  Z-Blog PHP