Android - Почему моя ось не рисует? - PullRequest
0 голосов
/ 05 августа 2011

Следующее должно нарисовать ось в середине экрана. Однако ничего не появляется. Я уверен, что это связано с моими путями.

@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); 

Но я не хочу решать проблему таким образом, я хочу исправить то, что не так с моими путями. Может кто-нибудь сказать мне, почему точки не добавляются к моему пути правильно? Цикл должен пройти только дважды, что создает линию для каждой стороны оси. То есть. Один цикл создает вершину вертикальной оси, а второй цикл создает нижнюю часть.

Как заставить мои пути создать эту полную линию, а затем нарисовать ее вне цикла?

1 Ответ

2 голосов
/ 05 августа 2011

Стиль рисования по умолчанию выглядит как FILL, поэтому, возможно, наличие линии на вашем пути сбивает с толку.Попробуйте установить значение STROKE:

axisPaint.setStyle(Paint.Style.STROKE);

См. Paint.Style

...