2012-12-14 104 views
1

我有繪製圓弧的自定義視圖。 現在我還需要繪製一條線,該線連接中心和圓周 ,並且應該完全位於圓弧的中間。如何繪製連接中心與圓周的圓弧的直線

現在我知道,在Android的帆布畫線的代碼是相當簡單的

,但它不涉及角度和圓弧始終使用角度繪製自己。

所以我可以在與弧線相同的方向畫線嗎?

我在這裏明確還是需要解釋更多?

請幫助。

回答

10

計算起點和終點。

private class MView extends View { 
    private Paint mPaint; 
    private RectF mRect; 
    private int mCenterX = 150; 
    private int mCenterY = 150; 

    public MView(Context context) { 
     super(context); 
     mPaint = new Paint(); 
     mPaint.setColor(Color.BLACK); 
     mPaint.setStyle(Style.STROKE); 
     mRect = new RectF(0, 0, mCenterX * 2, mCenterY * 2); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     float startAngle = 30; 
     float sweepAngle = 60; 

     canvas.drawArc(mRect, startAngle, sweepAngle, true, mPaint); 
     float startX = mCenterX; 
     float startY = mCenterY; 
     float radius = mCenterX; 
     float angle = (float) ((startAngle + sweepAngle/2) * Math.PI/180); 
     float stopX = (float) (startX + radius * Math.cos(angle)); 
     float stopY = (float) (startY + radius * Math.sin(angle)); 

     canvas.drawLine(startX, startY, stopX, stopY, mPaint); 
    } 

} 
0

這裏是我結束了基於上述回答:

for (int i = 0; i < numOfDividing; i++) { 
     angle = i * (360/numOfDividing); 

     Point aPoint = new Point(
       (int) (x0 + (radius) * Math.cos(Math.toRadians(angle))), 
       (int) (y0 + (radius) * Math.sin(Math.toRadians(angle))) 
     ); 
     //Timber.d("Point %d : %d, %d", i, aPoint.x, aPoint.y); 
     points.add(aPoint); 
    }