【发布时间】:2011-10-20 10:18:39
【问题描述】:
下面应该是在屏幕中间画一个轴。然而,什么也没有出现。我很肯定这与我的路径有关。
@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 循环中,我可以绘制轴:
垂直 For 循环:
canvas.drawLine(centerX, centerY, verticalEndX, verticalEndY, paint);
水平 For 循环:
canvas.drawLine(centerX, centerY, horizontalEndX, horizontalEndY, paint);
但我不想以这种方式解决问题,我想纠正我的路径有什么问题。谁能告诉我为什么这些点没有正确添加到我的路径中?循环应该只经过两次,为轴的每一侧创建一条线。 IE。一个循环创建垂直轴的顶部,第二个循环创建底部。
如何让我的路径创建完整的线,然后将其绘制到循环之外?
【问题讨论】: