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