2011-08-04 45 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