【程式碼片段】獲取解析度DPI和畫素、毫米、英寸互相轉換
阿新 • • 發佈:2019-01-28
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); }