dojox.gfx ограничивающий прямоугольник для узлов Text и Group - PullRequest
65 голосов
/ 23 октября 2009

Документация для getBoundingBox () в dojo гласит:

Возвращает ограничивающую рамку фигуры. Форма текста является точечным объектом, поэтому оно не определяет ограничивающую рамку.

Я не понимаю. Любая вменяемая реализация векторной графики для веб-сайтов включает в себя ограничивающую рамку для текстовых объектов (это RaphaelJS и jQuery SVG)! Что означает «точечный объект»?

Я не нашел ссылки на ограничивающий прямоугольник для объекта Group, но при использовании последней версии Dojo, getBoundingbox возвращает null и для групп

Я могу легко сделать ограничивающий прямоугольник для себя, но единственные действительно проблемные фигуры, для которых мне нужен ограничивающий прямоугольник, - это Группа и Текст.

Я закончил hotpatching dojo, как:

dojox.gfx.Text.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
dojox.gfx.Group.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});

Что, конечно, будет работать только для выходного интерфейса SVG.

Но мне интересно, я что-то упустил? Есть ли лучший способ сделать это?

1 Ответ

2 голосов
/ 24 июля 2012

Я не нашел ссылки на ограничивающий прямоугольник для объекта Group, но при использовании последней версии Dojo getBoundingbox также возвращает null для групп

Эта проблема связана с исправлением этой ошибки ? Похоже, это для меня. Это было Changed 7 months ago by pruzand и помечено как фиксированное

http://bugs.dojotoolkit.org/ticket/7019

Обновление 2012-07-24: Я скачал release-1.8.0rc1 локально и настроил тот же тест в разрешенном билете. Это действительно было исправлено в 1.8, и getBoundingBox, возвращающий null для групп, разрешается, как указано в заявке. Тестовый скрипт успешно возвращает:

bbox of group: {"x":0,"y":2,"endX":238,"endY":379,"width":238,"height":377}
transformed bbox: [{"x":277.7302117816355,"y":152.5448441073243},{"x":512.114456998541,"y":193.87311039205372},{"x":446.64909401810826,"y":565.1456332776561},{"x":212.26484880120276,"y":523.8173669929267}]

Кроме того, в соответствии с этим постом в Твиттере , 1.8 выйдет через неделю или две.

...