Как нарисовать дугу? - PullRequest
       2

Как нарисовать дугу?

0 голосов
/ 04 февраля 2012

я пытаюсь нарисовать дугу - просто выглядящая дуга из точки (x1, y1) в точку (x2, y2)

как мне это сделать?

я использовалнастолько сложный и не дружественный пользователю метод drawArc в классе Graphics.пока не повезло.

вот что я попробовал:

void drawArc(Graphics2D g, int x1, int y1, int x2, int y2) {
AffineTransform prev = g.getTransform();
    double dx = x2 - x1, dy = y2 - y1;
    double angle = Math.atan2(dy, dx);
    int len = (int) Math.sqrt(dx*dx + dy*dy);
    AffineTransform at = AffineTransform.getTranslateInstance(x1, y1);
    at.rotate(angle);
    g.transform(at);
    g.drawArc(len/2, len/2, len ,len/2, 0, 60);
    g.setTransform(prev);
}

спасибо вперед.

1 Ответ

2 голосов
/ 04 февраля 2012

graphics.drawLine(x1,y1,x2,y2) является самой простой из возможных дуг , которую вы можете нарисовать с помощью этой информации.

Возможно, это не то, что вы хотите.Если вы хотите чего-то большего ... соблазнительного, вам нужно как-то определить, насколько оно соблазнительно, в каком направлении.Метод drawArc требует, чтобы вы вычислили эллипс, который касается обеих точек.Дуга - это отрезок круга между этими точками.Существует бесконечное количество возможных эллипсов.(Пример drawLine предполагает бесконечный эллипс.) Но для этого требуется больше информации (какой эллипс выбрать) и некоторые вычисления.

Если вы хотите нарисовать кривые между двумя точками и контрольными точками (что вы, вероятно, хотите) вам нужно изучить QuadCurve2D или CubicCurve2D и drawShape.Вы можете найти образец кода здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...