Как повернуть текст для 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);
}

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().


painter->save(); // saves current painter state
// painter->rotate(45); clockwise rotation 
// painter->rotate(-45); counter clockwise rotation
painter->restore(); // restores painter state

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

painter->rotate(yourAngle);

до

painter->drawText();

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

painter->rotate(-yourAngle);