在QPixmap的图片上添加文字

Qt5环境中,使用QPixmap展示一些图片,要求在展示的图片上添加一些文字。

因为图片最终是用来制作动画效果的,所以需要将文字写入到图片QPixmap中,在进行动画处理。

直接上代码:

        QString name = QString("/wlcm/image/123.png")
        QPixmap pix(name);
        //创建绘画对象
        QPainter painter(&pix);
        painter.begin(&pix);
        painter.setPen(Qt::black);
        //设置字体大小.另可以根据画笔改变颜色等属性
        QFont font = painter.font();
        font.setPixelSize(12);//改变字体大小
        font.setFamily("Microsoft YaHei");
        painter.setFont(font);
        //将文字写在图片上,例如是int型的数字123,居中
        painter.drawText(pix.rect(), Qt::AlignCenter, QString::number(123).toStdString().c_str());

这样我们得到的pix图片就是已经在原图片上添加了文本的,新生成的一张图了,再根据需求直接调用pix。这样的好处是资源文件中的原图不变,只在使用时代码中临时生成需要的图+文字,用于展示。

        Pixmap *animatePic = new Pixmap(pix);
        animatePic->setZValue(2);
        addItem(animatePic);
        animatPics_[carnum] = animatePic;

        QPropertyAnimation *animation = new QPropertyAnimation(animatePic, "pos");
        animation->setEasingCurve(QEasingCurve::Linear);
        animation->setDuration(time*1000);
        animation->setStartValue(stPoint);
        animation->setEndValue(endPoint);
//        animation->setKeyValueAt(0.5,QPointF());//途径关键点
//        animation->start();//动画开始
        animation->start(QAbstractAnimation::DeleteWhenStopped);//动画完成后自动清除本动画

这是图片展示的简单的线性运动效果,展示完即自动清除。注,动画清除只清除动画效果,本身的图片元素也需要手动清除,否则会残留动画结束画面在动画场景中。

注:转载请注明出处。QQQQ


版权声明:本文为qianqiaoqianqi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。