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版权协议,转载请附上原文出处链接和本声明。