#java #android #canvas #path #point
#java #Android #холст #путь #точка
Вопрос:
У меня возникли небольшие проблемы, пытаясь выяснить, как рисовать пути из точки на холсте, при этом начало каждого пути одинаково удалено от начальной точки. Чтобы проиллюстрировать, что я имею в виду, имеющийся у меня на данный момент код способен генерировать это:
и желаемый результат будет примерно таким:
Мой код:
int n = 3;
int r;
double x;
double y;
point1 = new Point(mWidth/2, mHeight/2);
double angle;
double angleFactor;
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < 3; i ){
angleFactor = 2 * Math.PI / n;
angle = i * angleFactor;
x = (point1.x) r * Math.cos(angle);
y = (point1.y) r * Math.sin(angle);
//Draw paths
path.reset();
path.moveTo(point1.x, point1.y);
path.lineTo((float) x, (float) y);
canvas.drawPath(path, paint);
}
}
Есть ли простое решение для этого?
Ответ №1:
Поскольку вы хотите иметь небольшое расстояние между смещением линии и центральной точкой, вы можете определить начальные координаты следующим образом:
double xStart, xEnd;
double yStart, yEnd;
double offsetFraction = 0.1;
Внутри for
цикла в onDraw()
:
double lengthX = r * Math.cos(angle);
double lengthY = r * Math.sin(angle);
xStart = (point1.x) offsetFraction * lengthX;
yStart = (point1.y) offsetFraction * lengthY;
xEnd = (point1.x) lengthX;
yEnd = (point1.y) lengthY;
//Draw paths
path.reset();
path.moveTo((float) xStart, (float) yStart);
path.lineTo((float) xEnd, (float) yEnd);
canvas.drawPath(path, paint);
Комментарии:
1. Идеально! Это именно то, что мне было нужно, спасибо!