【代码片段】获取分辨率DPI和像素、毫米、英寸互相转换

        private static float DEFAULT_DPI_X = 0;
        private static float DEFAULT_DPI_Y = 0;

        /// <summary>获取分辨率DPI</summary>
        /// <param name="dpiX"></param>
        /// <param name="dpiY"></param>
        public static void GetDPI(out float dpiX, out float dpiY)
        {
            if (LibSysUtils.DEFAULT_DPI_X == 0 || LibSysUtils.DEFAULT_DPI_Y == 0)
            {
                using (Bitmap map = new Bitmap(100, 100))
                {
                    using (Graphics g = Graphics.FromImage(map))
                    {
                        LibSysUtils.DEFAULT_DPI_X = g.DpiX;
                        LibSysUtils.DEFAULT_DPI_Y = g.DpiY;
                    }
                }
            }
            dpiX = LibSysUtils.DEFAULT_DPI_X;
            dpiY = LibSysUtils.DEFAULT_DPI_Y;
        }
        /// <summary>
        /// 毫米转为像素(注:dpi分水平和垂直,获取方法为得到 Graphics 的实例化对象 g,调用g.DpiX、g.DpiY)
        /// </summary>
        /// <param name="mm">毫米</param>
        /// <param name="fDPI">分辨率(水平/垂直)</param>
        /// <returns></returns>
        public static float MillimetersToPixel(float mm, float fDPI)
        {
            //毫米转像素:mm * dpi / 25.4 
            return (float)Math.Round((mm * fDPI / 25.4f), 2);
        }
        /// <summary>
        /// 像素转为毫米(注:dpi分水平和垂直,获取方法为得到 Graphics 的实例化对象 g,调用g.DpiX、g.DpiY)
        /// </summary>
        /// <param name="px">像素</param>
        /// <param name="fDPI">分辨率(水平/垂直)</param>
        /// <returns></returns>
        public static float PixelToMillimeters(float px, float fDPI)
        {
            //像素转毫米:px * 25.4 / dpi
            return (float)Math.Round(((px * 25.4f) / fDPI), 2); ;
        }
        /// <summary>
        /// 英寸到像素
        /// </summary>
        /// <param name="inches"></param>
        /// <returns></returns>
        public static float InchesToPixels(float inches, float fDPI)
        {
            return (float)Math.Round(inches * fDPI, 2);
        }
        /// <summary>
        /// 像素到英寸
        /// </summary>
        /// <param name="px"></param>
        /// <returns></returns>
        public static float PixelsToInches(float px, float fDPI)
        {
            return (float)Math.Round(px / fDPI, 2);
        }
        /// <summary>
        /// 毫米到英寸
        /// </summary>
        /// <param name="mm"></param>
        /// <returns></returns>
        public static float MillimetersToInches(float mm)
        {
            return (float)Math.Round(mm / 25.4f, 2);
        }
        /// <summary>
        /// 英寸到毫米
        /// </summary>
        /// <param name="mm"></param>
        /// <returns></returns>
        public static float InchesToMillimeters(float Inches)
        {
            return (float)Math.Round(Inches * 25.4f, 2);
        }

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值