Russian Qt Forum
Ноябрь 23, 2024, 19:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить bound (граничный прямоугольник) текста под углом ?  (Прочитано 2801 раз)
solo700
Гость
« : Май 26, 2010, 15:42 »

Отрисовываю текст под углом. Надо получить ограничивающий прямоугольник уже трансформированного текста.
Примерный код:
Код:
    painter.rotate(0);
    rectf=painter.boundingRect(viewport()->rect(), "пробный текст");
    painter.drawRect(rectf);
    painter.drawText(viewport()->rect(), "пробный текст");
Здесь отрисовывается не трансформированный текст с граничным прямоугольником.
Код:
    painter.rotate(-150);
    rectf=painter.boundingRect(viewport()->rect(), "пробный текст");//пытаюсь взять bound повернутого текста
    painter.drawRect(rectf);
    painter.drawText(viewport()->rect(), "пробный текст");
Здесь отрисовывается трансформированный текст, но граничный прямоугольник получается как не трансформированного
текста, повернутого на угол. Нужно получить bound уже трансформированного текста. На рисунке прямоугольник красного цвета.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Май 26, 2010, 15:52 »

Код
C++ (Qt)
QMatrix mx;
mx.rotate(-150);
rectf=mx.mapRect(painter.boundingRect(viewport()->rect(), "пробный текст"));
painter.rotate(-150);
painter.drawRect(rectf);
painter.drawText(viewport()->rect(), "пробный текст");
 
Записан

Qt 5.11/4.8.7 (X11/Win)
solo700
Гость
« Ответ #2 : Май 26, 2010, 17:54 »

Большое спасибо  GreatSnake ! Идею понял.
Визуально правильнее будет вот так :
Код:
QMatrix mx;
mx.rotate(-150);
rectf=mx.mapRect(painter.boundingRect(viewport()->rect(), "пробный текст"));
painter.drawRect(rectf);
painter.rotate(-150);
painter.drawText(viewport()->rect(), "пробный текст");
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.399 секунд. Запросов: 22.