工作中遇到了這樣一個情況,需要把平面坐标點畫到螢幕上,本來是需要通過gis子產品來實作的,但是由于涉及到地圖模闆的更改,比較麻煩,是以調整為直接在畫布(Graphics)上落點。這個過程的關鍵為實際點轉螢幕點,也就是長度機關轉為圖像分辨率(像素)
- 依據
(1)DPI(每英寸多像素點數)
(2)一英寸等于25.4mm
(3)象素數 / DPI = 英寸數
(4)英寸數 * 25.4 = 毫米數
像素換算為毫米 w = x * 25.4 / dpix
毫米換算成dpi dpix = x * 25.4 / w
毫米換算成像素 x = w * dpix /25.4
- 實作
public double length2ScreenPx(double length_m)
{
return m2px(length_m) * getMapScale();
}
//将米轉px
double xdpi = 72;
public double m2px(double length)
{
return length * 1000 * xdpi * (1.0f / 25.4f);
}
//設定顯示比例,目的是為了留白
public double getMapScale()
{
return (picHeight / m2px(plotWidth)) * 0.75;//(圖檔長度/轉為像素後的實際長度)*顯示的百分比
}