Следующее должно нарисовать ось в середине экрана. Однако ничего не появляется. Я уверен, что это связано с моими путями.
@Override
protected void onDraw(Canvas canvas) {
//Variables declared here temporarily for testing purposes
int canterX = getWidth() /2;
int centerY = getHeight() /2;
int radius = 150;
Path verticalAxis = new Path();
Path horizontalAxis = new Path();
drawAxis();
}
private void drawAxis(Canvas canvas) {
int axisLineThickness = 1;
int verticalEndX;
int verticalEndY;
int horizontalEndX;
int horizontalEndY;
Paint axisPaint = new Paint();
axisPaint.setColor(Color.WHITE);
axisPaint.setStrokeWidth(axisLineThickness);
double theta;
for(int i = 90; i < 360; i += 180) {
theta = toRadians(i);
verticalEndX = centerX + (int) ((cos(theta)) * radius);
verticalEndY = centerY + (int) ((sin(theta)) * radius);
verticalAxis.moveTo(centerX, centerY);
verticalAxis.lineTo(verticalEndX, verticalEndY);
}
canvas.drawPath(verticalAxis, axisColor);
for(int i = 90; i < 360; i += 180) {
theta = toRadians(i);
horizontalEndX = centerX + (int) ((cos(theta)) * radius);
horizontalEndY = centerY + (int) ((sin(theta)) * radius);
horizontalAxis.moveTo(centerX, centerY);
horizontalAxis.lineTo(verticalEndX, verticalEndY);
}
canvas.drawPath(horizontalAxis, axisColor);
}
Я знаю, что могу нарисовать ось, если добавлю следующее к вертикали и горизонтали для циклов соответственно:
Вертикаль для петли:
canvas.drawLine(centerX, centerY, verticalEndX, verticalEndY, paint);
Горизонтально для цикла:
canvas.drawLine(centerX, centerY, horizontalEndX, horizontalEndY, paint);
Но я не хочу решать проблему таким образом, я хочу исправить то, что не так с моими путями. Может кто-нибудь сказать мне, почему точки не добавляются к моему пути правильно? Цикл должен пройти только дважды, что создает линию для каждой стороны оси. То есть. Один цикл создает вершину вертикальной оси, а второй цикл создает нижнюю часть.
Как заставить мои пути создать эту полную линию, а затем нарисовать ее вне цикла?