C 中公釐與畫素的換算方法

2021-04-23 15:00:12 字數 794 閱讀 8059

c#中以畫素作為尺寸單位,畫素是一種相對的尺寸概念,與公釐的轉換與當前顯示器的解析度有關。在不同解析度下轉換的係數不同。

借助gdi可以完成公釐至畫素的轉換。

public

static

double millimeterstopixelswidth(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 * pixelsperinch * 10 div 254;

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

攝像頭距離標定方法研究(得到畫素和公釐的轉換比)

一般在高精度測量時需要做以下幾個標定,一光學畸變標定 如果您不是用的軟體鏡頭,一般都必須標定 二投影畸變的標定,也就是因為您安裝位置誤差代表的影象畸變校正,三物像空間的標定,也就是具體算出每個畫素對應物空間的尺寸。前兩者應該都可以通過 張正友 標定方法進行解決 對於空間的標定,基本上都是通過獲得比對...

經緯度到螢幕畫素點的換算方法

經緯度到螢幕畫素點的換算方法 相關問題點 1 地球是不規則的球體,兩極扁,赤道鼓。不能簡單地作為圓球體來計算。2 每緯度在地理位置上的距離是一致的 約 111公里 但是每經度之間的距離是不同的 越往兩極,東西方向上的距離就越小 不能直接轉換為直角座標系。3 給出的經緯度座標發生變化後,需要動態的縮放...

經緯度到螢幕畫素點的換算方法

經緯度到螢幕畫素點的換算方法 相關問題點 1 地球是不規則的球體,兩極扁,赤道鼓。不能簡單地作為圓球體來計算。2 每緯度在地理位置上的距離是一致的 約 111公里 但是每經度之間的距離是不同的 越往兩極,東西方向上的距離就越小 不能直接轉換為直角座標系。3 給出的經緯度座標發生變化後,需要動態的縮放...