最后一行drawPath位于屏幕的0,0坐标上

时间:2016-02-04 14:45:27

标签: android

我正在尝试连接屏幕上的某些点并用一些颜色填充它们之间的空间,但它的工作但是在最后一点之后路径转到屏幕的0,0坐标,它的左上角,我想要的时候它完成连接第一个点,例如绘制一个矩形。这是我的代码:

public void drawFloor() {
        Bitmap bmpFloorPattern = BitmapFactory.decodeResource(getResources(), R.drawable.floor_pattern6);
        BitmapShader patternBMPshader = new BitmapShader(bmpFloorPattern,
                Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);

        canvas = surfaceHolder.lockCanvas();
        Path path = new Path();
        path.reset();

        if (points != null) {
            MapPoint temp = null;
            for (int i = 0; i < points.size(); i++) {
                float x = points.get(i).getX();
                float y = points.get(i).getY();
                if (temp != null) {
                    float deltaX = Math.abs(x - temp.getX());
                    float deltaY = Math.abs(y - temp.getY());

                    if (Math.max(deltaX, deltaY) == deltaX) {
                        x = temp.getX();
                    } else {

                        y = temp.getY();
                    }
                }

                path.lineTo(x, y);
                temp = points.get(i);


            }


            canvas.drawColor(Color.WHITE);
            if (points.size() > 0) {
                for (int i = 0; i < points.size(); i++) {
                    path.lineTo(points.get(i).getX(), points.get(i).getY());
                }
            }

            paint.setShader(patternBMPshader);
            path.close();
            canvas.drawPath(path, paint);
            paint.setShader(null);
        }

        surfaceHolder.unlockCanvasAndPost(canvas);
    }

1 个答案:

答案 0 :(得分:1)

  

在最后一个点之后,路径将进入屏幕左上角的0,0坐标

如果Path的当前点与第一个点不同,close()方法将添加连接两个点的线段以关闭它。默认情况下,Path从坐标(0,0)开始,即显示屏的左上角,它解释了您所看到的行为。要更改Path的起点,请将第一个操作设为moveTo(),而不是lineTo()