1
我有繪製圓弧的自定義視圖。 現在我還需要繪製一條線,該線連接中心和圓周 ,並且應該完全位於圓弧的中間。如何繪製連接中心與圓周的圓弧的直線
現在我知道,在Android的帆布畫線的代碼是相當簡單的
,但它不涉及角度和圓弧始終使用角度繪製自己。
所以我可以在與弧線相同的方向畫線嗎?
我在這裏明確還是需要解釋更多?
請幫助。
我有繪製圓弧的自定義視圖。 現在我還需要繪製一條線,該線連接中心和圓周 ,並且應該完全位於圓弧的中間。如何繪製連接中心與圓周的圓弧的直線
現在我知道,在Android的帆布畫線的代碼是相當簡單的
,但它不涉及角度和圓弧始終使用角度繪製自己。
所以我可以在與弧線相同的方向畫線嗎?
我在這裏明確還是需要解釋更多?
請幫助。
計算起點和終點。
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);
}
}
這裏是我結束了基於上述回答:
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);
}