2013-07-23 15 views
5

Vorrei ruotare il testo di 45 gradi?Come ruotare il testo per 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); 
} 

risposta

10

Inserire painter->rotate(45); prima painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str); e painter->rotate(-45); dopo (per ripristinare l'angolo di rotazione del sistema di coordinate):

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

A seconda se si intende di 45 gradi in senso orario o anti-orario potrebbe essere necessario negare gli angoli di rotazione.

Dopo aver ruotato il sistema di coordinate, tutto ciò che si dipinge verrà dipinto ruotato fino al ripristino del pittore. Un modo conveniente per salvare e ripristinare lo stato del pittore sta usando QPainter::save() e QPainter::restore().

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

O la rotazione (-45) o il salvataggio/ripristino possono essere omessi –

3

Al fine di ruotare il testo (e qualsiasi altro oggetto disegnabile) disegnato dal pittore basta chiamare

painter->rotate(yourAngle); 

prima

painter->drawText(); 

Se si desidera tornare alla precedente chiamata ruotare Stato ancora.

painter->rotate(-yourAngle);