长度单位转像素

工作中遇到了这样一个情况,需要把平面坐标点画到屏幕上,本来是需要通过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;//(图片长度/转为像素后的实际长度)*显示的百分比
        }
发布了31 篇原创文章 · 获赞 2 · 访问量 2560

猜你喜欢

转载自blog.csdn.net/fangyu723/article/details/102851506