2015-07-04 3 views
0

Мое приложение включает в себя calculatePosition(), который рисует четыре круга:Наполнение область пересечения двух окружностей в Android

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); 
} 

Я хочу знать, можно ли в Android для заполнения пересекающихся областей между двумя кругами, как показано на рисунке ниже. Если да, есть ли какой-нибудь базовый пример того, как его получить?

enter image description here

+0

Заканчивать http://developer.android.com/reference/android/graphics/Region.html# соч% 28android.graphics.Region,% 20android.graphics.Region,% 20android.graphics.Region.Op% 29 – stkent

ответ

1

Используйте 'Canvas.clipPath'

Для примера:

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); 
Смежные вопросы