1

我正在尝试在我的应用程序的地图视图上绘制一个填充的多边形。无论我尝试过什么,它都不会被填充。我可以让笔触显示出来,但我不能让它填充。下面是我的多边形类的绘制方法。它覆盖覆盖。

public void draw(Canvas canvas, MapView mapv, boolean shadow) {
            super.draw(canvas, mapv, shadow);

            Paint mPaint = new Paint();

            mPaint.setStyle(Paint.Style.STROKE);
            mPaint.setColor(Color.BLACK);
            mPaint.setStrokeJoin(Paint.Join.ROUND);
            mPaint.setStrokeCap(Paint.Cap.ROUND);
            mPaint.setStrokeWidth(6);

            Paint mPaintFill = new Paint();

            mPaintFill.setStyle(Paint.Style.FILL);
            mPaintFill.setColor(Color.GREEN);

            Path path = new Path();

            GeoPoint start = route.get(0);
            for (int i = 1; i < route.size(); ++i) {
                    Point p1 = new Point();
                    Point p2 = new Point();

                    Projection projection = mapv.getProjection();
                    projection.toPixels(start, p1);
                    projection.toPixels(route.get(i), p2);

                    path.moveTo(p2.x, p2.y);
                    path.lineTo(p1.x, p1.y);

                    start = route.get(i);
            }              


            canvas.drawPath(path, mPaint);
            canvas.drawPath(path, mPaintFill);
            //canvas.clipPath(path, Op.DIFFERENCE); 
    }

上面的代码对我来说将正确绘制线条,但它没有被填充。删除 canvas.drawPath(path, mPaint); 并且只留下填充一个会导致地图上不显示任何内容。我什至尝试将 Paint.Style.STROKE 设置为 Paint.Style.FILL_AND_STROKE。我完全不知所措,此时我认为这很简单,我在看。

4

0 回答 0