Osman Esen
Osman Esen

Reputation: 1696

Filling intersection area of two circles in Android

My application includes a calculatePosition(), which draws four circles:

private void calculatePosition(){
    Paint paint = new Paint();
    paint.setColor(Color.RED);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(10);

    float ratio = (float) (640/3.45);

    float radiusB1 = Calculations.convertscale(scale, position[0] * ratio);
    float radiusB2 = Calculations.convertscale(scale, position[1] * ratio);
    float radiusB3 = Calculations.convertscale(scale, position[2] * ratio);
    float radiusB4 = Calculations.convertscale(scale, position[3] * ratio);



    canvas.drawCircle(broadCaster1x, broadCaster1y, radiusB1, paint);
    canvas.drawCircle(broadCaster2x, broadCaster2y, radiusB2, paint);
    canvas.drawCircle(broadCaster3x, broadCaster3y, radiusB3, paint);
    canvas.drawCircle(broadCaster4x, broadCaster4y, radiusB4, paint);
}

I want to know whether it is possible in Android to fill intersecting areas between two circles as shown in the figure below. If yes, is there any basic example of how to obtain it ?.

enter image description here

Upvotes: 0

Views: 833

Answers (1)

Sound Conception
Sound Conception

Reputation: 5411

Use 'Canvas.clipPath'

For Example:

Path pathA = new Path();
pathA.addCircle(xCenterA, yCenterA, radiusA, Direction.CW);
Path pathB = new Path();
pathB.addCircle(xCenterB, yCenterB, radiusB, Direction.CW);
canvas.clipPath(pathA);
canvas.clipPath(pathB, Region.Op.DIFFERENCE);

Upvotes: 1

Related Questions