以下应该在屏幕中间绘制一个轴。然而,什么也没出现。我很肯定这与我的路径有关。
@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浏览器。一个循环创建垂直轴的顶部,第二个循环创建底部。
如何让我的路径创建整行,然后将其绘制到循环之外?
答案 0 :(得分:2)
Paint的默认样式似乎是FILL,所以可能只是在你的路径中有一条线让人感到困惑。尝试将其设置为STROKE:
axisPaint.setStyle(Paint.Style.STROKE);
请参阅Paint.Style