2013-07-23 33 views
5

Tôi muốn xoay văn bản 45 độ?Làm thế nào để xoay văn bản cho 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); 
} 

Trả lời

10

Chèn painter->rotate(45); trước painter->drawText(75, 100 + i * 800/9 - 6, 40, 40, 1, str);painter->rotate(-45); sau (để khôi phục lại các góc quay của hệ tọa độ):

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

Tùy thuộc vào nếu bạn có nghĩa là 45 độ theo chiều kim đồng hoặc chống chiều kim đồng hồ bạn có thể cần phải phủ nhận các góc quay.

Sau khi bạn xoay hệ tọa độ, mọi thứ bạn vẽ sẽ được vẽ xoay cho đến khi bạn khôi phục họa sĩ. Một cách thuận tiện để lưu và khôi phục trạng thái của họa sĩ là sử dụng QPainter::save()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

Có thể bỏ qua xoay (-45) hoặc lưu/khôi phục –

3

Để xoay văn bản của bạn (và bất kỳ đối tượng drawable khác) được vẽ bởi họa sĩ chỉ cần gọi

painter->rotate(yourAngle); 

trước

painter->drawText(); 

Nếu bạn muốn trở về trạng thái cuộc gọi xoay trước lần nữa.

painter->rotate(-yourAngle); 
Các vấn đề liên quan