Как нарисовать точки пути SVG в Java, используя Path2D (или любой ящик Shape)? - PullRequest
0 голосов
/ 28 февраля 2019

Я искал способ взять баллы у SVG и применить их у Path2D художника.

Задача парсинга здесь не моя, проблема в том, как понять, какточки работают на холсте и как применить его к Path2D.

Например, предположим, у меня есть тег SVG:

<svg>
    <path d = "
    m 51.688 5.25
    c 10 20 30 40 50 60
    z">
    </path>
</svg>

Это просто перемещает ящик в первую точку, рисует кривую с использованием этих точек и закрывает путь.

Я пытался применить это к Path2D вот так:

float x = 200, y = 200;
Path2D.Float painter = new Path2D.Float();

painter.moveTo(51.688+x, 5.25+y);
painter.curveTo(10+x, 20+y, 30+x, 40+y, 50+x, 60+y);
painter.closePath();

Поскольку точки из SVG являются родственниками, я суммировал поля x и y в баллах, но получил такой результат: enter image description here

Это был всего лишь небольшой тест, чтобы проверить, работает ли чертеж, и мне нужно использовать его с более сложными путями, и поскольку мне нужно рисовать до 50 путей SVG Batik не был хорошим подходом, учитывая, что он был медленнымдля рендеринга только одного svg-изображения моего проекта.

Тогда мне нужно знать, можно ли нарисовать путь SVG, используя его точки, как показано ниже.Если да, то как исправить мою идею?Если нет, то как правильно нарисовать путь?PS: я нацеливаюсь swing.

1 Ответ

0 голосов
/ 01 марта 2019

Если вы хотите понять, как работают команды пути SVG, лучше всего прочитать спецификацию SVG .Там все четко объяснено.Я не уверен, почему вы пришли сюда, чтобы спросить сначала.

Команды пути в нижнем регистре (например, c) относительно .Их координаты должны рассматриваться как смещения от конечной точки последнего сегмента пути.

Таким образом, эквивалент вашего описания пути должен быть:

painter.moveTo(51.688, 5.25);
painter.curveTo(51.688 + 10, 5.25 + 20, 51.688 + 30, 5.25 + 40, 51.688 + 50, 5.25 + 60);
painter.closePath();

(я пропустил ваш x и y параметры здесь для ясности).

...