2011-08-04 77 views
0

以下是應該在屏幕中間繪製一個軸。但是,沒有出現。我認爲這與我的道路有關。Android - 爲什麼我的軸沒有畫?

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

} 

我知道我可以使軸平局,如果我分別添加以下垂直和水平的循環:

垂直For循環:

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

水平For循環:

canvas.drawLine(centerX, centerY, horizontalEndX, horizontalEndY, paint); 

但我不想這樣解決問題,我想糾正什麼是錯的機智我的路徑。任何人都可以告訴我爲什麼點沒有正確添加到我的路徑?該循環應該只經過兩次,從而爲軸的每一側創建一條線。 IE瀏覽器。一個循環創建垂直軸的頂部,第二個循環創建底部。

如何讓我的路徑創建完整的行,然後將其繪製在循環之外?

回答

2

Paint的默認樣式看起來像是FILL,所以在你的路徑中可能只有一條線是令人困惑的東西。嘗試將它設置爲行程:

axisPaint.setStyle(Paint.Style.STROKE); 

Paint.Style

+0

非常感謝你,從不必擔心,我可能不得不解決許多其他路徑節省了我。你不知道爲什麼它不適用於填充嗎?或者爲什麼在路徑中有一條線會混淆事物? – StartingGroovy

+0

因爲當你在路上只有2點時,沒有什麼可以填充。 :)我想你可以將它設置爲FILL_AND_STROKE以防萬一,但這取決於你想要的明確程度。 – brindy

+0

請問爲什麼你不想簡單畫幾條線?因爲無論如何你都要重新計算每次調用drawAxis的路徑,所以我認爲drawLine會更快更清晰。 – brindy