Как получить объект Bounding Box of KineticJS Path

У меня есть объект KineticJS Path с определенными данными SVG Path. Это просто отлично отображает на экране.

Теперь мне нужно получить ограничивающую рамку для этого объекта пути (сложной формы).

Как получить ограничивающую рамку для определенного пути KineticJS?

1 ответ

Решение

У KineticJS нет способа получить ограничивающую рамку пути SVG, который он нарисовал.

У вас есть несколько сложных вариантов, чтобы получить эту ограничивающую рамку.

Вот самые простые варианты...

  • Создайте внеэкранный элемент SVG с этим путем и получите ограничивающий прямоугольник с помощью этой команды SVG: yourPath.getBBox ()

  • Используйте исходный код KineticJS, который преобразует путь SVG в команды рисования Canvas и "обходит" эти линии + кривые, чтобы определить точки maxXY и minXY. Источник KineticJS находится здесь: https://github.com/ericdrowell/KineticJS/blob/master/src/plugins/Path.js

  • Получите изображение Kinetic.Path с yourPath.toImage. Затем нарисуйте это изображение за пределами экрана. Затем используйте context.getImageData, чтобы получить данные пикселей изображения. Изучите каждый вертикальный столбец и каждый горизонтальный ряд пикселей, чтобы определить, где начинаются / заканчиваются непрозрачные пиксели.

Опять же, получить свой ограничивающий прямоугольник, безусловно, возможно, но не для слабонервных кодеров. Если вы столкнетесь с проблемами при кодировании вашего ограничивающего решения, просто попросите дополнительную помощь здесь, в Stackru.

Другие вопросы по тегам