0
다음은 화면 중간에 축을 그려야합니다. 그러나 아무 것도 나타나지 않습니다. 나는 나의 길과 관련이 있다는 것이 긍정적이다. For 루프Android - 왜 내 축을 그리지 않습니까?
수직 :
canvas.drawLine(centerX, centerY, verticalEndX, verticalEndY, paint);
수평 루프를 들어
@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);
}
나는 내가 각각 루프의 수직 및 수평에 다음을 추가하면 내가 축 무승부를 만들 수 있습니다 알고
canvas.drawLine(centerX, centerY, horizontalEndX, horizontalEndY, paint);
하지만이 방법으로 문제를 해결하고 싶지는 않습니다. 잘못된 것을 수정하고 싶습니다. 내 길. 아무도 내 경로에 포인트가 올바르게 추가되지 않는 이유를 말해 줄 수 있습니까? 루프는 축의 각면에 대해 선을 만드는 두 번 통과해야합니다. 예. 하나의 루프는 수직축의 상단을 만들고 두 번째 루프는 하단을 만듭니다.
경로를 만들어 전체 행을 만든 다음 루프 외부에 그려야합니까?
Paint.Style 내가 해결해야했다 수 많은 다른 경로에 대해 걱정할 필요에서 저를 저장하는, 대단히 감사합니다 참조하십시오. 당신은 채워진 채로 작동하지 않는 이유를 알지 못합니까? 또는 경로에 선을 긋는 것이 왜 물건을 혼란스럽게합니까? – StartingGroovy
경로 상에 2 점이있을 때 실제로 채울 것이 없습니다. :) 필자는 FILL_AND_STROKE로 설정할 수 있다고 가정하고 있지만, 명시 적으로 원하는 방식에 따라 달라집니다. – brindy
몇 줄을 그 으려하지 않는 이유는 무엇입니까? 어쨌든 어쨌든 드로잉을 호출 할 때마다 경로를 다시 계산하기 때문에 drawLine이 약간 더 빠르고 명확해질 것이라고 생각합니다. – brindy