【代码片段】获取分辨率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);
        }

猜你喜欢

转载自blog.csdn.net/michelsn/article/details/80287160