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瀏覽器。一個循環創建垂直軸的頂部,第二個循環創建底部。
如何讓我的路徑創建完整的行,然後將其繪製在循環之外?
非常感謝你,從不必擔心,我可能不得不解決許多其他路徑節省了我。你不知道爲什麼它不適用於填充嗎?或者爲什麼在路徑中有一條線會混淆事物? – StartingGroovy
因爲當你在路上只有2點時,沒有什麼可以填充。 :)我想你可以將它設置爲FILL_AND_STROKE以防萬一,但這取決於你想要的明確程度。 – brindy
請問爲什麼你不想簡單畫幾條線?因爲無論如何你都要重新計算每次調用drawAxis的路徑,所以我認爲drawLine會更快更清晰。 – brindy