![]() |
Точный размер текста в текстфилде
Неожиданно столкнулся с проблемой, когда textWidth и textHeight текстового поля возвращают недостоверные результаты. Для одних шрифтов погрешности почти нет, а для других она весьма значительна. С погрешностью textWidth я уже почти смрился, но вот узнать точный размер textHeight хоть убейте - надо...
Использование LineMetrics тоже к получению достоверных данных не привели. Есть ли у кого-нибудь идея как получить более менее правдивые данные о textHeight ? |
Если совсем ниче не поможет, а скорость не очень важна - переводи текст на BitmapData и ищи снизу первую строку, где есть хоть одна точка :)
|
Спасибо за совет.
Но дело в том, что скорость как раз-таки и важна, так как все это должно висеть на Event.CHANGE... |
Размер глифов или все таки текста с полями?
|
Вобщем, есть текстовое поле его должна окружать рамка с маркерами для ресайзинга...
Проблема в том, что я не могу точно посчитать высоту рамки каждый раз когда добавляеться/удаляется новая строка текста... |
Не берусь судить, но возможно скорости работы с битмапдата хватит для этой задачи...
P.S. Можно ещё поставить Код:
autosize = true |
alekslitvinenk >> а так чем вам не нравится?
Код:
import flash.text.TextFormat;Цитата:
Цитата:
|
Цитата:
|
Цитата:
Если выставить autoSize, то слишком много вещей окажется сломано... |
Цитата:
|
Цитата:
alekslitvinenk >> если я правильно вас понял, то вам нужен текстфилд, который можно сайзить в двух плоскостях (w/h), так ? Ну, тогда попробуйте брать баунды первой буквы каждой строки. |
Ну вы же самы должны понимать, что указанный способ имеет весьма ощутимые ограничения, в частности когда первый символ строки строчный, а в строке имеются также прописные символы...
Попробую описать проблему несколько иначе: Как правильно задать высоту текстовому полю, чтобы текст был виден целиком, чтобы даже ничтожная часть символов не скрывалась(а именно так и происходит если использовать Код:
_myTextField.height = _myTextFiled.textHeightВ настоящее время использую: Код:
_myTextField.height = _myTextFiled.textHeight + 4*_myTextFiled.numLinesКод:
3*_myTextFiled.numLinesДа, и к размеру шрифта это никакого отношения не имеет. |
Да, вроде все номально с autoSize.
Код:
var recordHeight:int=0; |
Ну а теперь сделайте TextFormat с италиком и шрифтом, например, таймс, передайте туда "f" и увидите, что буква у вас обрезается....
Можно полечить форматированием, например, rightMargin, но, имхо, все равно это плохой хак |
Код:
function getTextRect(tf:TextField):Rectangle { |
|
Простите что не вовремя. Попробуйте:
Код:
txtField.width = txtField.textWidth + 4; |
romantique, для ширины - для разных шрифтов надо разную циферку прибавлять. Точно знаю что для Tahoma - +3.
|
Ух ты, не знал даже. А есть где нть табличка этих циферок?:) Честно говоря немало неудобств эта штука доставила тем, кому нужно масштабировать что то пиксель в пиксель.
|
Цитата:
|
Не лень. Код выше и ссылки не дают ответа на мой вопрос.
В AS2 точно помню, что было именно по 2-пиксельная рамка, помимо всех прочих параметризуемых отступов и т.п. Это не зависело от шрифта. картинка из хэлпа: http://livedocs.adobe.com/livecycle/...xt-metrics.jpg |
Была и есть, но вот только шрифты разные бывают.
|
Цитата:
Цитата:
|
| Часовой пояс GMT +4, время: 09:32. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.