2013-07-23 10 views
5

Ich möchte den Text um 45 Grad drehen?Wie rotiert man Text für drawText?

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); 
} 

Antwort

10

Insert painter->rotate(45); vor painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str); und painter->rotate(-45); nach (den Drehwinkel des Koordinatensystems zur Wiederherstellung):

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

Je nachdem, ob Sie meinen 45 Grad im Uhrzeigersinn oder gegen den Uhrzeigersinn Sie negieren müssen möglicherweise die Drehwinkel.

Nachdem Sie das Koordinatensystem gedreht haben, wird alles, was Sie malen, solange gedreht, bis Sie den Maler wiederherstellen. Eine bequeme Möglichkeit zum Speichern und Wiederherstellen des Malers ist QPainter::save() und QPainter::restore().

painter->rotate(yourAngle); 

vor

painter->drawText(); 

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

Entweder das Drehen (-45) oder das Speichern/Wiederherstellen kann entfallen –

3

Um Ihren Text (und anderes ziehbar Objekt) vom Maler rufen Sie einfach gezogen drehen Wenn Sie zum vorherigen Zustand Anruf drehen zurückkehren wollen nochmal.

painter->rotate(-yourAngle);