Как повернуть текст для drawText?

Я хотел бы повернуть текст на 45 градусов?

QFont font;
font.setPixelSize(12);

//grid
for(int i = 0; i < 10; i++){
    painter->drawLine(100, 100 + i * 800/9, 900, 100 + i * 800/9);
    str = QString::number((double)9 - i, 'd', 1);
    painter->setFont(font);
    painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str);
}

person jdl    schedule 23.07.2013    source источник


Ответы (3)


Вставьте painter->rotate(45); перед painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str); и painter->rotate(-45); после (для восстановления угла поворота системы координат):

painter->rotate(45);
painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str);
painter->rotate(-45);

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

После того, как вы повернете систему координат, все, что вы рисуете, будет повернуто, пока вы не восстановите рисовальщик. Удобным способом сохранения и восстановления состояния рисовальщика является использование QPainter::save() и QPainter::restore().

person Daniel Hedberg    schedule 23.07.2013
comment
Но QPainter.rotate() - вращает систему координат. Итак, координаты x и y в drawText теперь неверны. - person Allex; 10.01.2019

Чтобы повернуть ваш текст (и любой другой объект, который можно рисовать), нарисованный художником, просто вызовите

painter->rotate(yourAngle);

до

painter->drawText();

Если вы хотите вернуться в предыдущее состояние, снова вызовите команду rotate.

painter->rotate(-yourAngle);
person Mateusz Andrzejewski    schedule 23.07.2013

person    schedule
comment
Либо поворот (-45), либо сохранение/восстановление могут быть опущены. - person Frank Osterfeld; 24.07.2013