2016-04-12 15 views
2

を使用して扇形を描画します。私はどのようにそれを達成することができますか?私はこのような何かを描きたいパス

canvas.draw(Path path, Paint paint); 

私は以下しようとしたが、それは私がしたいとtがうまくいかなかったの:

Path path = new Path(); 
path.setFillType(Path.FillType.EVEN_ODD); 
path.addCircle(getWidth()/2, getHeight()/2, getHeight()/2, Path.Direction.CW); 
path.addRect(0, getHeight() - 70, getWidth(), getHeight(), Path.Direction.CW); 
+0

あなたの 'minSdkVersion'とは何ですか? –

+0

私の分sdkは15 –

+0

です。それは多分役立ちますhttp://www.curious-creature.com/2012/12/11/android-recipe-1-image-with-rounded-corners/ –

答えて

1

あなたはほとんど働いてそれを持っていました。あなたは私はあなたが修正高さを割り当てる必要があることに疑問から想定しCanvas.drawArcdocumentation

使用することができ、

// Limit the drawable region of the canvas (saving the state before) 
canvas.save(); 
canvas.clipRect(new Rect(0, canvas.getHeight() - 70, canvas.getWidth(), canvas.getHeight())); 

Path path = new Path(); 
path.setFillType(Path.FillType.INVERSE_EVEN_ODD); 
path.addCircle(canvas.getWidth()/2, canvas.getHeight()/2, canvas.getHeight()/2, Path.Direction.CW); 
path.addRect(0, canvas.getHeight() - 70, canvas.getWidth(), canvas.getHeight(), Path.Direction.CW); 
canvas.drawPath(path, paint); 

// Restore the canvas to the saved state to remove clip 
canvas.restore(); 

// Draw more things on the canvas... 

Alternativelly:あなたは自分の部門を描画する描画する前にキャンバスをクリップしてPath.FillType.INVERSE_EVEN_ODDを使用する必要がありますあなたのセクターのために、その高さに基づいてstartAnglesweepAngledrawArcメソッドのパラメータ)を計算する必要があります(正方形のイメージを仮定します)。ここでは、サンプルコード(互換性のあるAPIレベル15)です。

int sectorHeigh = 70; // The height of your sector in pixels 

// Compute the start angle based on your desired sector height 
float startAngle = (float) Math.toDegrees(Math.asin((canvas.getHeight()/2f - sectorHeigh)/(canvas.getHeight()/2f))); 
// Add the arc (calculating the sweepAngle based on startAngle) 
canvas.drawArc(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), startAngle, 2 * (90 - startAngle), false, paint); 

Pathオブジェクトを作成している円弧を使用して、あなたの部門を描画するための別の方法は、使用してアークPath.addArcdocumentation)を追加し、その後Canvas.drawPathdocumentation)を描画するために使用しますそれ。

+0

それは素晴らしいです回答!ありがとう:) –

関連する問題