c# 获取屏幕显示器分辨率的放大倍数

1、获取X轴

 /// <summary>
        ///  获取显示器分辨率放大倍数
        /// </summary>
        /// <returns>宽度倍数</returns>
        public static float GetHostDisplayResolutionScaleX()
        {
           
                IntPtr dC = GetDC(IntPtr.Zero);
                GetDeviceCaps(dC, 0x76);
                GetDeviceCaps(dC, 8);
                float num = ((float)GetDeviceCaps(dC, 0x76)) / ((float)GetDeviceCaps(dC, 8));
                ReleaseDC(IntPtr.Zero, dC);
                return num;
            
        }

2、获取Y轴

  /// <summary>
        /// 获取显示器分辨率放大倍数
        /// </summary>
        /// <returns>高度倍数</returns>
        public static float GetHostDisplayResolutionScaleY()
        {
          
                IntPtr dC = GetDC(IntPtr.Zero);
                float num = ((float)GetDeviceCaps(dC, 0x75)) / ((float)GetDeviceCaps(dC, 10));
                ReleaseDC(IntPtr.Zero, dC);
                return num;
            
        }

3、调用系统dll库

  [DllImport("User32.dll")]
        public static extern IntPtr GetDC(IntPtr A_0);
        [DllImport("gdi32.dll")]
        public static extern int GetDeviceCaps(IntPtr A_0, int A_1);
        [DllImport("User32.dll")]
        public static extern IntPtr ReleaseDC(IntPtr A_0, IntPtr A_1);

猜你喜欢

转载自blog.csdn.net/weixin_38826167/article/details/127007024