0

以下は、AndroidのGoogleマップで円を描いている私のコードです。それは私にとってはうまくいっています。

問題文:-

現在、グーグルマップに描かれている円は非常に暗いです。私は現在持っているその円を作る必要がありlittle bit light with the same colorます。ペイントや色のいくつかのパラメータを微調整することで、その円を少し明るくすることは可能ですか?中央部が暗くなりますが、理由はわかりません。私が現在持っている4つのサークルすべてでそれを軽くする必要があります。

   class MapOverlay extends Overlay {
    private GeoPoint pointToDraw;
    int[] imageNames=new int[6];
    private Point mScreenPoints;
    private Bitmap mBitmap;
    private Paint mCirclePaint;


    public MapOverlay(GPSLocationListener gpsLocationListener, int currentUser) {
        imageNames[0]=currentUser;
        mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mCirclePaint.setColor(0x30000000);
        mCirclePaint.setStyle(Style.FILL_AND_STROKE);
        mBitmap = BitmapFactory.decodeResource(getResources(),imageNames[0]);
        mScreenPoints = new Point();
    }

    public void setPointToDraw(GeoPoint point) {
        pointToDraw = point;
    }

    public GeoPoint getPointToDraw() {
        return pointToDraw;
    }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
        super.draw(canvas, mapView, shadow);
        if (pointToDraw == null) {
            return true;
        }
        mScreenPoints = mapView.getProjection().toPixels(pointToDraw, mScreenPoints);
        int totalCircle=5;
        int radius=40;
        int centerimagesize=35;
        for (int i = 1; i <= totalCircle; i ++) { 
            canvas.drawCircle(mScreenPoints.x,mScreenPoints.y, i*radius, mCirclePaint); 
        } 
        canvas.drawBitmap(mBitmap, (mScreenPoints.x-(centerimagesize/2)),(mScreenPoints.y-(centerimagesize/2)), null);
        super.draw(canvas,mapView,shadow);
        return true;
    }


} 

現在の私のサークルのスナップショットここに画像の説明を入力してください-

どんな提案も大いに役立ちます。

4

1 に答える 1

2

問題

中央が暗くなるのは、4 つの円を重ねて描いているためです。2つ目の円を描くと、共通する部分が2度塗りされて暗くなります。3つめの円を描くとさらに濃くなり……

解決

すべての円を同じ色にしたい場合は、 を使用する必要がStyle.STROKEある大きな円を除いて、すべての円に を使用する必要がありますStyle.FILL_AND_STROKE。これで、小さな円の線だけを描き、大きな円を描くときにすべての領域を塗りつぶします。

コード

    mCirclePaint.setStyle(Style.STROKE); 
    for (int i = 1; i <= totalCircle-1; i ++) {  
        canvas.drawCircle(mScreenPoints.x,mScreenPoints.y, i*radius, mCirclePaint);  
    }  
    mCirclePaint.setStyle(Style.FILL_AND_STROKE); 
    canvas.drawCircle(mScreenPoints.x,mScreenPoints.y, totalCircle*radius, mCirclePaint);  

よろしく

于 2012-10-19T00:39:29.470 に答える