关闭

qt开发(二): graphic view放大导致text失真的完美解决办法

1553人阅读 评论(0) 收藏 举报
分类:

text变形其实本质是painter被加上scale之后,text也随之改变,解决办法是把这个scale找出来,让他只作用于坐标而不作用于text本身。

void Line::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
           QWidget *widget){
    painter->setPen(myPen);
    painter->drawLine(myLine);
    if(mark_.isEmpty()==false){
        painter->setPen(QPen(Qt::black));
        double x1 = myLine.x1();
        double y1 = myLine.y1();
        double x2 = myLine.x2();
        double y2 = myLine.y2();
        QFont font = painter->font();
        font.setPixelSize(16);
        painter->setFont(font);
        QFontMetrics fm(painter->font());
        int textWidthInPixels = fm.width(mark_);
        int textHeightInPixels = fm.height();

        QTransform trans = painter->worldTransform();
        qDebug()<<trans;
        double scale = trans.m11();
        painter->scale(1/scale, 1/scale);
        double x_t = textWidthInPixels- 10;
        double y_t = y2 + textHeightInPixels/2;
        painter->drawText(QPoint(x_t*scale,y_t*scale),mark_);
 
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

    wangeen's technique blog

    个人资料
    • 访问:704691次
    • 积分:9030
    • 等级:
    • 排名:第2057名
    • 原创:230篇
    • 转载:156篇
    • 译文:2篇
    • 评论:33条
    博客专栏
    文章分类