円弧を描くカスタムビューがあります。次に、中心と円周を結ぶ線を引く必要があります。これは、円弧の真ん中にある必要があります。
これで、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);
}