2016-07-16 4 views
1

I Bereich zwischen zwei Kreis in Leinwand meines enter image description hereWie füllt man den Bereich zwischen zwei Kreisen in der Leinwand?

dies füllen will OnDraw

protected void onDraw(Canvas canvas) 
{ 
    super.onDraw(canvas); 

    canvas.drawCircle(centerX, centerY, radarRadius/3, mPaintCircle); 
    canvas.drawCircle(centerX, centerY, 3 * radarRadius/7, mPaintCircle); 
} 
+0

Haben Sie versucht, [meine Antwort] (http: // Stackoverflow .com/questions/38411560/how-to-fill-zwischen-zwei-kreis-in-canvas/38411626 # 38411626)? –

+0

Ich kann nach dem Zeichnen keinen Kreis sehen. – Dav

+0

Haben Sie die Leinwand mit einer beliebigen Farbe gefüllt? –

Antwort

1

Sie können zwei Kreisbahnen schaffen und die Leinwand wie dieser Clip:

Path outerPath = new Path(); 
outerPath.addCircle(centerX, centerY, outerRadius, Direction.CW); 
Path innerPath = new Path(); 
innerPath.addCircle(centerX, centerY, innerRadius, Direction.CW); 
canvas.clipPath(outerPath); 
canvas.clipPath(innerPath, Region.Op.DIFFERENCE); 

Zusammen Deaktivieren Sie die Hardwarebeschleunigung für die Ansicht:

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
0

Sie können die folgende einfache Regel verwenden :)

Two nested circles

Beispielcode

<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
    <meta http-equiv="X-UA-Compatible" content="ie=edge"> 
 
    <title>Two Circles</title> 
 
</head> 
 

 
<body> 
 
    <canvas id="canvas" width="200" height="200"></canvas> 
 

 
    <script> 
 
     var canvas = document.getElementById('canvas') 
 
     var ctx = canvas.getContext('2d') 
 

 
     var cx = 100 
 
     var cy = 100 
 
     var r1 = 80 
 
     var r2 = 60 
 

 
     // outer circle 
 
     ctx.fillStyle = 'red' 
 
     ctx.beginPath() 
 
     ctx.arc(cx, cy, r1, 0, 2 * Math.PI) 
 
     ctx.fill() 
 

 
     // inner circle 
 
     ctx.fillStyle = 'white' 
 
     ctx.beginPath() 
 
     ctx.arc(cx, cy, r2, 0, 2 * Math.PI) 
 
     ctx.fill() 
 
    </script> 
 
</body> 
 

 
</html>