2013-07-23 12 views
5

Chciałbym obrócić tekst o 45 stopni?Jak obrócić tekst dla 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); 
} 

Odpowiedz

10

Insert painter->rotate(45); przed painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str); i painter->rotate(-45); po (przywrócenie kąta obrotu układu współrzędnych):

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

zależności od tego czy chodziło Ci o 45 stopni w prawo lub w lewo może trzeba negować kąty obrotu.

Po obróceniu układu współrzędnych wszystko, co malujesz, zostanie pomalowane obrócone do momentu przywrócenia malarza. Wygodnym sposobem na zachowanie i przywrócenie stanu malarza jest użycie QPainter::save() i 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

Można pominąć obrót (-45) lub zapis/przywrócenie –

3

aby obrócić tekst (i wszelkie inne rozciągliwej Object) sporządzony przez malarza zadzwoń

painter->rotate(yourAngle); 

przed

painter->drawText(); 

Jeśli chcesz, aby powrócić do poprzedniego stanu połączeń obracania jeszcze raz.

painter->rotate(-yourAngle);