• 8225阅读
  • 3回复

如何让文字进行旋转? [复制链接]

上一主题 下一主题
离线zhaocj
 
只看楼主 正序阅读 楼主  发表于: 2009-08-22

我目前想让文字旋转180度后用QPainter::drawText()函数显示出来,但还找不到任何方法。

哪位高人能帮我解决这个问题,我先谢谢了!
离线zhaocj
只看该作者 3楼 发表于: 2009-08-23
谢谢两位!

经过两位的提示,我又仔细看了QPainter的文档,文字翻转的原理就是改变坐标系系统。

所以先用QPainter::translate()函数改变坐标原点的位置,再用QPainter::rotate(180)函数把坐标系统旋转180度,然后用QPainter::drawText()函数绘制文字,最后用QPainter::resetMatrix()函数恢复坐标系统即可。

再次感谢两位!
离线xtlx2000
只看该作者 2楼 发表于: 2009-08-23
应该跟用绘图吧,QPainter::drawText(),然后转换坐标系,然后旋转,恢复坐标系就行了吧
离线john123
只看该作者 1楼 发表于: 2009-08-22
qt的example有例子

double pi = 3.14;

    // double a    = pi/180 * 185.0; //改變角度
     double a    = pi/180 * angle_value;
     double sina = sin(a);
     double cosa = cos(a);

     QMatrix translationMatrix(1, 0, 0, 1, 50.0, 50.0);
     QMatrix rotationMatrix(cosa, sina, -sina, cosa, x, y);//原點
     QMatrix scalingMatrix(0.3, 0, 0, 1.0, 0, 0);

     QMatrix matrix;
     matrix =  scalingMatrix * rotationMatrix * translationMatrix;


     painter.setPen(QPen(Qt::blue, 1, Qt::DashLine));
     //painter.drawRect(0, 0, 100, 100);

     painter.setMatrix(matrix);            //這會改變painter的matrix

     painter.setFont(QFont("Helvetica", 24));
     painter.setPen(QPen(Qt::red, 1));
     painter.drawText(20, 10, msg);
快速回复
限100 字节
 
上一个 下一个