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

原创 2013年12月04日 12:12:55

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_);
 
    }
}

Qt 图片适应QLabel控件大小(饱满缩放和按比例缩放)

直接上代码: QImage Image; Image.load("d:/test.jpg"); QPixmap pixmap = QPixmap::fromImage(Ima...
  • kfy2011
  • kfy2011
  • 2017年09月06日 16:02
  • 1922

交互式QGraphicsView(平移/缩放/旋转)

Graphics View提供了一个平台,用于大量自定义 2D 图元的管理与交互,框架包括一个事件传播架构,支持场景 Scene 中的图元 Item 进行精确的双精度交互功能。Item 可以处理键盘...
  • u011012932
  • u011012932
  • 2016年12月09日 19:09
  • 8421

Qt中窗体控件按照比例缩放,自适应窗口大小进行布局

最近在做本科毕设,用到了Qt,无奈本人实在是太过于小白了,很多东西都进行了很久的探索,比如今天说到的窗体控件布局...一把辛酸泪     首先就是创建一个GUI文件,然后进行UI设计,这里就只需要从左...
  • sinat_36420785
  • sinat_36420785
  • 2017年03月11日 22:24
  • 10024

代码段(.text段)太长,导致无法在线仿真的解决办法 ——拆分.text段

代码段(.text段)太长,导致无法在线仿真的解决办法 ——拆分.text段   DSP2812的代码被编译器放在.text段中,当代码越长时,.text段就越大。而一个段只能放在一块连续的RA...
  • cuiweitju
  • cuiweitju
  • 2014年07月27日 10:53
  • 1179

QT开发(四十)——GraphicsView编程

QT开发(四十)——GraphicsView编程一、QGraphicsScene1、QGraphicsSceneQGraphicsScene继承自QObject,是一个管理图元的容器,与QGraphi...
  • A642960662
  • A642960662
  • 2017年03月26日 12:47
  • 900

Qt 在GraphicsView中 打开一幅图片

简述: 记录一下如何在 Qt中打开一幅图片 步骤: 1. 新建一个项目,Qt C++ 项目, Qt GUI应用 之后按步骤新建就可以了, 2. 勾选中下面这三个...
  • anialy
  • anialy
  • 2012年11月14日 01:08
  • 28298

Qt浅谈之十七:飞舞的蝴蝶(GraphicsView框架)

一、简介        简介 二、运行图 (1)如下图1所示。 三、详解 1、开始 (1)开始 四、总结 (1)本博文只发布部分源码,读者可根据思路来进行定制。...
  • taiyang1987912
  • taiyang1987912
  • 2014年08月19日 16:51
  • 15472

交越失真及产生原因和改善方法

在分析电路时把三极管的导通电压看作零,当输入电压较低时,因三极管截止而产生的失真称为交越失真。这种失真通常出现在通过零值处。与一般放大电路相同,消除交越失真的方法是设置合适的静态工作点,使得三极管在静...
  • qq_24373811
  • qq_24373811
  • 2016年09月11日 20:29
  • 2997

ico文件失真的解决办法

打开Graphics.pas文件,查找函数writeIcon,将以下两句中的16改为65536InternalGetDIBSizes(IconInfo.hbmColor, ColorInfoSize,...
  • zjf0836
  • zjf0836
  • 2009年03月20日 19:41
  • 486

GraphicsView的旋转,放缩

视图可以通过矩阵 QMatrix 设置放缩,旋转; 在Qt , GDI+等多种绘图方式中,矩阵方式概念变化图像,是图像变化的一种高级方式; // extern GraphicsView *   g...
  • chinabinlang
  • chinabinlang
  • 2013年12月06日 17:30
  • 1706
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:qt开发(二): graphic view放大导致text失真的完美解决办法
举报原因:
原因补充:

(最多只允许输入30个字)