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 給出的經緯度座標發生變化後,需要動態的縮放...