Android - 我的轴为什么不绘制?

时间:2011-08-04 22:22:02

标签: android path line draw

以下应该在屏幕中间绘制一个轴。然而,什么也没出现。我很肯定这与我的路径有关。

@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循环中,我可以进行轴绘制:

Vertical For Loop:

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

水平循环:

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

但我不想以这种方式解决问题,我想纠正我的路径有什么问题。谁能告诉我为什么积分没有正确添加到我的路径?循环应该只经过两次,这为轴的每一侧创建一条线。 IE浏览器。一个循环创建垂直轴的顶部,第二个循环创建底部。

如何让我的路径创建整行,然后将其绘制到循环之外?

1 个答案:

答案 0 :(得分:2)

Paint的默认样式似乎是FILL,所以可能只是在你的路径中有一条线让人感到困惑。尝试将其设置为STROKE:

axisPaint.setStyle(Paint.Style.STROKE);

请参阅Paint.Style