国产探花免费观看_亚洲丰满少妇自慰呻吟_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,將浮點數運算轉化為整數運算,效率更高

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安义县| 天柱县| 揭东县| 宣恩县| 辽阳县| 富裕县| 绵阳市| 来安县| 吐鲁番市| 建阳市| 库尔勒市| 柏乡县| 齐齐哈尔市| 重庆市| 平罗县| 金平| 尖扎县| 德保县| 滁州市| 榕江县| 宁津县| 扎兰屯市| 拉孜县| 鄂州市| 张家川| 建平县| 庆元县| 石河子市| 瑞安市| 揭阳市| 阿坝县| 肥乡县| 宁城县| 玉山县| 孝昌县| 七台河市| 海淀区| 璧山县| 永嘉县| 六盘水市| 夹江县|