国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中像素與毫米之間換算方法

2023-05-14 16:26:27
字體:
來源:轉載
供稿:網友

C#中以像素作為尺寸單位,像素是一種相對的尺寸概念,與毫米的轉換與當前顯示器的分辨率有關。在不同分辨率下轉換的系數不同。

借助GDI可以完成毫米至像素的轉換。

public static double MillimetersToPixelsWidth(double length)
  { 
         System.Windows.Forms.Panel p = new System.Windows.Forms.Panel();
       System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(p.Handle);
       IntPtr hdc = g.GetHdc();
       int width = GetDeviceCaps(hdc, 4); //HORZRES
       int pixels = GetDeviceCaps(hdc, 8);// BITSPIXEL
       g.ReleaseHdc(hdc);
       return (((double)pixels / (double)width) * (double)length);
  }
  [DllImport("gdi32.dll")] private static extern int GetDeviceCaps(IntPtr hdc, int Index);

像素與毫米的轉換

轉換還需要知道另一個參數:DPI(每英寸多少點)

象素數 / DPI = 英寸數

英寸數 * 25.4 = 毫米數

對于顯示設備,不管是打印機還是屏幕,都有一種通用的方法

先用GetDeviceCaps(設備句柄,LOGPIXELSX)或者 GetDeviceCaps(設備句柄,LOGPIXELSY)獲得設備每英寸的像素數

分別記為:px 和 py

一英寸等于25.4mm

那么毫米換算成像素的公式為

水平方向的換算: x * px /25.4

垂直方向的換算: y * py /25.4

像素換算為毫米 x * 25.4 / px

在程序中這么寫

MyControl.Height := 10{mm} * PixelsPerInch * 10 div 254;

分子和分母同乘以10,將浮點數運算轉化為整數運算,效率更高

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 综艺| 施秉县| 吉水县| 裕民县| 滁州市| 芦山县| 东兰县| 井陉县| 张家港市| 崇明县| 西宁市| 晋城| 普宁市| 辽阳市| 兰州市| 筠连县| 兴隆县| 龙游县| 高平市| 昌宁县| 永清县| 垦利县| 共和县| 綦江县| 观塘区| 建昌县| 平原县| 喀什市| 延寿县| 江阴市| 绥芬河市| 北流市| 白城市| 台州市| 武夷山市| 惠东县| 双江| 平潭县| 沙河市| 穆棱市| 萨嘎县|