天天看點

長度機關轉像素

工作中遇到了這樣一個情況,需要把平面坐标點畫到螢幕上,本來是需要通過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;//(圖檔長度/轉為像素後的實際長度)*顯示的百分比
        }           

繼續閱讀