2

Android アプリで円のオーバーレイを描画したいと思います。これはもちろん簡単に行うことができ、それに色を追加することもできます。

しかし、私が本当にやりたいことは、円を透明に保ち、円の外側 (残りの世界) を薄い灰色で陰にすることです。

円をパスとして追加し、世界を陰影付けして円を切り取ろうとしましたが、デバイスで円の周りにバウンディング ボックスが表示されます (エミュレータでは問題なく表示されます)。

どんな助けでも感謝します。以下はコード スニペットです。

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

    Projection projection = mapView.getProjection();

    Point pt = new Point();

    GeoPoint geo = new GeoPoint((int) (mLat * 1e6), (int) (mLon * 1e6));

    projection.toPixels(geo, pt);
    float circleRadius = projection.metersToEquatorPixels(mRadius)
            * (1 / FloatMath.cos((float) Math.toRadians(mLat)));

    Paint innerCirclePaint;

    innerCirclePaint = new Paint();
    innerCirclePaint.setColor(Color.TRANSPARENT);
    innerCirclePaint.setAlpha(35);
    innerCirclePaint.setAntiAlias(true);
    innerCirclePaint.setStyle(Paint.Style.FILL);

    Path path = new Path();
    path.setFillType(Path.FillType.WINDING);
    path.addCircle((float) pt.x, (float) pt.y, circleRadius, Path.Direction.CCW);canvas.drawPath(path, innerCirclePaint);
    canvas.drawARGB(150, 0, 0, 0 );
    canvas.clipPath(path);
}
4

2 に答える 2

1
paint.setColor(Color.parseColor ("#88ff0000"));
于 2012-12-13T05:07:27.947 に答える