Высота шрифта ?, Проблемы с QFontMetrics и т.п. |
Здравствуйте, гость ( Вход | Регистрация )
Высота шрифта ?, Проблемы с QFontMetrics и т.п. |
flankerr |
17.1.2008, 17:42
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
есть вывод текста
painter->drawText(x,y,"TEST_TXT"); Вопрос как вокруг текста нарисовать прямоугольник ? (Или как узнать QRect в которм находиться текст) QFontMetrics выдаёт весьма противоречивый результат.... |
|
|
flankerr |
17.1.2008, 18:09
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
ширину определить легкоЮ а вот высоту как оказалось...
QFontMetrics fm(painter->font()); fm.height() - слишком большое значение выдаёт.. QRect rect = fm.boundingRect("TEST_TXT"); да, таким образом мы узнаём ширину, однако высота.... rect.height() - выдаёт значение больше чем высота текста -(rect.top() + rect.bottom()) вот это уже близко но всё равно не то... QSize sz = fm.size(Qt::TextSingleLine,QString("TEST_LINE_1")); тоже мимо. И так. А существует ли в Qt сопособ узнать реальную высоту ??? Сообщение отредактировал flankerr - 17.1.2008, 18:16 |
|
|
ViGOur |
17.1.2008, 18:22
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Так вроде нормально:
Сообщение отредактировал ViGOur - 17.1.2008, 18:24 |
|
|
flankerr |
17.1.2008, 18:36
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
Увы....
С таким же успехом я могу прямоугольник на весь экран нарисовать.... Мне надо чтобы было ТОЧНО пиксель в пиксель по периметру текста... |
|
|
ViGOur |
17.1.2008, 18:42
Сообщение
#5
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
А в данном случае как?
У меня отклонение где-то на 1 пиксель неболее, но это ведь просто арифметически можно поправить. |
|
|
flankerr |
17.1.2008, 18:45
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
А в данном случае как? У меня отклонение где-то на 1 пиксель неболее, но это ведь просто арифметически можно поправить. ты размер шрифта поставь в 100пунктов очень наглядно получиться а подгонять "арифметически" нет возмоджнсть учитывая что размер шрифта задаёться динамически, нао чтоб само считало |
|
|
flankerr |
17.1.2008, 19:01
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
вот с помощью такой феньки
rect = fm.boundingRect rect.top() + rect.bottom() + fm.lineWidth() можно получить высоту шрифта без нижнего участка. Но вот как получить прямоугольник в пикселах сколкьо занимает текст не понятно. Хотя в документации и сказно что это должна делать boundingRect однако на практике увы.... |
|
|
ViGOur |
17.1.2008, 19:12
Сообщение
#8
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Я уже вижу, что пошаманить немного прийдется...
Сообщение отредактировал ViGOur - 17.1.2008, 19:13 |
|
|
ViGOur |
17.1.2008, 19:14
Сообщение
#9
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
А если попробовать посчитать посимвольно?
С помощью: QRect QFontMetrics::boundingRect ( QChar ch ) const. |
|
|
Litkevich Yuriy |
18.1.2008, 9:54
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Я тут не вникая глянул в книжку Макса Шлее, там текст нарисован и названия размеров.
текст например такой:
описание размеров: ascent()-от верха буквй "Й" до базовой линии, descent()-от базовой линии вниз, НО ниже ножки буквы "р", где кончается непонятно, height()=ascent()+descent()+1, т.е. имеется какая то не понятка насчет низа, и возможно при рисовании текста, у вас несростухи рамки с низу шрифта? |
|
|
Текстовая версия | Сейчас: 21.12.2024, 13:48 |