a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

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

2023-05-14 16:26:27
字體:
供稿:網(wǎng)友

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

借助GDI可以完成毫米至像素的轉(zhuǎn)換。

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);

像素與毫米的轉(zhuǎn)換

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

象素數(shù) / DPI = 英寸數(shù)

英寸數(shù) * 25.4 = 毫米數(shù)

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

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

分別記為: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,將浮點數(shù)運算轉(zhuǎn)化為整數(shù)運算,效率更高

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩欧美综合 | 久久久久国产一区二区三区四区 | 爱爱网址| 老妇女av| 欧美日韩一区在线 | 九九热视频在线 | 欧美极品一区二区三区 | 黑人另类 | 黑人巨大精品 | 国产福利一区二区三区在线观看 | 一区二区亚洲 | 国产欧美在线观看 | 日韩欧美影院 | 久久三区 | igao视频| 青青久久av | 亚洲高清电影 | 日韩成人午夜 | 91精品久久久久久久 | 久久久www成人免费无遮挡大片 | 激情欧美一区二区三区中文字幕 | 精品欧美一区二区三区 | 成人超碰在线观看 | 欧美在线观看网站 | aa级毛片毛片免费观看久 | 老司机午夜免费精品视频 | 精品日韩一区二区三区 | 黄色小视频在线免费观看 | 91精品国产乱码久久久久久久久 | www.亚洲一区二区 | 波多野结衣亚洲 | 九九免费视频 | 久久99深爱久久99精品 | 一区二区三区回区在观看免费视频 | 久久综合99re88久久爱 | 精品无码久久久久国产 | 久一精品 | 亚洲精品在线免费播放 | 99视频| 日日日操 | 狠狠综合|