2011-08-04 5 views
0

다음은 화면 중간에 축을 그려야합니다. 그러나 아무 것도 나타나지 않습니다. 나는 나의 길과 관련이 있다는 것이 긍정적이다. For 루프Android - 왜 내 축을 그리지 않습니까?

수직 :

canvas.drawLine(centerX, centerY, verticalEndX, verticalEndY, paint); 

수평 루프를 들어

@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, horizontalEndX, horizontalEndY, paint); 

하지만이 방법으로 문제를 해결하고 싶지는 않습니다. 잘못된 것을 수정하고 싶습니다. 내 길. 아무도 내 경로에 포인트가 올바르게 추가되지 않는 이유를 말해 줄 수 있습니까? 루프는 축의 각면에 대해 선을 만드는 두 번 통과해야합니다. 예. 하나의 루프는 수직축의 상단을 만들고 두 번째 루프는 하단을 만듭니다.

경로를 만들어 전체 행을 만든 다음 루프 외부에 그려야합니까?

답변

2

페인트의 기본 스타일은 FILL 인 것처럼 보입니다. 따라서 경로에 선을 추가하는 것이 혼란스러운 일일 수 있습니다. STROKE로 설정하십시오 :

axisPaint.setStyle(Paint.Style.STROKE); 

+0

Paint.Style 내가 해결해야했다 수 많은 다른 경로에 대해 걱정할 필요에서 저를 저장하는, 대단히 감사합니다 참조하십시오. 당신은 채워진 채로 작동하지 않는 이유를 알지 못합니까? 또는 경로에 선을 긋는 것이 왜 물건을 혼란스럽게합니까? – StartingGroovy

+0

경로 상에 2 점이있을 때 실제로 채울 것이 없습니다. :) 필자는 FILL_AND_STROKE로 설정할 수 있다고 가정하고 있지만, 명시 적으로 원하는 방식에 따라 달라집니다. – brindy

+0

몇 줄을 그 으려하지 않는 이유는 무엇입니까? 어쨌든 어쨌든 드로잉을 호출 할 때마다 경로를 다시 계산하기 때문에 drawLine이 약간 더 빠르고 명확해질 것이라고 생각합니다. – brindy

관련 문제