2012-03-23 5 views
2

Во второй половине дня все,Рафаэль - найти ограничивающую поле текста ДО печати

Я пытаюсь нарисовать динамический «линейку», который может быть наведена (наряду с остальной частью страницы) и аннотированный, используя Рафаэль.

Я нашел путь РафаэляBBox() и isBBoxIntersect очень полезен для определения того, следует ли печатать градацию в определенную точку или если она будет слишком близка к другой и поэтому должна быть пропущена.

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

К сожалению, мой взгляд на документы Рафаэля показал мне только методы Paper.print() и Paper.text(), которые добавляются в документ. Это означает, что я должен добавить, затем найти bbox и test, а затем удалить, если плохо, что потенциально довольно медленно.

Есть ли способ найти размеры какого-либо текста, который я хочу распечатать, без его печати, чтобы я мог вручную создать объект bbox и протестировать его против моих сохраненных bbox?

Как всегда, спасибо заблаговременно! :-)

Cheers, -Oli

ответ

0

Вы можете использовать .getBBox() по тексту:

var text = paper.text(...); 
if (text.getBBox().width > max) ...; 

я не видел это документально официально, но это работает, и, видимо, кросс- браузер.

+0

Да, я нашел, что и играю с ним в момент ... проблема в том, что paper.text печатает его на бумаге, тогда как я хочу получить ограничительную рамку запланированного текста, прежде чем принимать решение о ее печати –

+1

Agh ... Боюсь, что просто нет такого, пока вы не положите его на холст. Однако вы можете установить opacity = 0, пока не решите, показывать или нет. – peteorpeter

+0

Хм, это ОЧЕНЬ интересная идея, Питер, это может просто выполнить эту работу. Хорошее мышление :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^