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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как нарисовать текст под углом  (Прочитано 7161 раз)
dr_Begemot
Гость
« : Июнь 18, 2009, 12:53 »

Нужно нарисовать текст под некоторым углом, при этом не поворачивая уже нарисованное. Рисую с помощью QPainter.
Записан
Rcus
Гость
« Ответ #1 : Июнь 18, 2009, 13:03 »

$QTDIR/examples/painting/transformations
Записан
dr_Begemot
Гость
« Ответ #2 : Июнь 18, 2009, 13:11 »

$QTDIR/examples/painting/transformations

Не могли бы вы пояснить, не очень понял из исходников как это сделать...
нужно просто чтобы текст в точке
painter->drawText(axisRect.right() + 10, y - 10, margin - 5, 20,Qt::AlignLeft, Qt::AlignVCenter,"abcd");
рисовался из этой же точки но располагался вертикально
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Июнь 18, 2009, 14:47 »

см.

Цитировать
void QPainter::rotate ( qreal angle )
void QPainter::setWorldMatrix ( const QMatrix & matrix, bool combine = false )
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
dr_Begemot
Гость
« Ответ #4 : Июнь 18, 2009, 16:35 »

см.

Цитировать
void QPainter::rotate ( qreal angle )
void QPainter::setWorldMatrix ( const QMatrix & matrix, bool combine = false )

Решил проблему проще...
Написал функцию которая выводит повернутый текст:
Код:
void drawRotateText(QPainter *painter, float degrees,
                             int x, int y, int w, int h, int flags, const QString &text, QRect *br=0){
painter->save();
painter->translate(x, y);
painter->rotate(degrees);
painter->drawText(0, 0, w, h, flags, text, br);
painter->restore();
}
Записан
notnext
Гость
« Ответ #5 : Июль 01, 2009, 12:14 »

Вот еще один способ кому будет интересно! Подмигивающий

 
Код
C++ (Qt)
 
       painter->save();
painter->setTransform(QTransform()
                .translate(r.width() / 2, r.height() / 2)
                .rotate(30, Qt::XAxis)
                .rotate(10, Qt::YAxis)
                .rotate(5, Qt::ZAxis)
                .scale(0.1 , 0.1)
                .translate(-r.width() / 2, -r.height() / 2));
painter->drawText(0, 0, w, h, flags, text, br);
painter->restore();
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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