如何用QT实现在图片上叠加显示文字
答案:2 悬赏:80
解决时间 2021-02-27 13:40
- 提问者网友:骨子里的高雅
- 2021-02-26 18:00
如何用QT实现在图片上叠加显示文字
最佳答案
- 二级知识专家网友:迟山
- 2021-02-26 19:10
利用QT实现在图片上叠加显示文字的代码参考如下:
QCustLabel::QCustLabel(QWidget *parent):QLabel(parent)
{
setPixmap(QPixmap(QString::fromUtf8(":/images/square.png"))) ;
text="001";
}
void QCustLabel::paintEvent(QPaintEvent *event)
{
QLabel::paintEvent(event) ;
QPainter painter(this) ;
painter.drawText(QPoint(5,25),text);
return ;
}
QCustLabel::QCustLabel(QWidget *parent):QLabel(parent)
{
setPixmap(QPixmap(QString::fromUtf8(":/images/square.png"))) ;
text="001";
}
void QCustLabel::paintEvent(QPaintEvent *event)
{
QLabel::paintEvent(event) ;
QPainter painter(this) ;
painter.drawText(QPoint(5,25),text);
return ;
}
全部回答
- 1楼网友:末日狂欢
- 2021-02-26 20:03
楼主不用在Widget上画了,直接用QImage来画,并直接存储.
QImage image = QPixmap("C:/Users/Administrator/Pictures/1.jpg").toImage();//绝对路径
//以你原来的那张图片来
//构造一个image
QPainter painter(&image); //为这个QImage构造一个QPainter
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
//设置画刷的组合模式CompositionMode_SourceOut这个模式为目标图像在上。
//改变画笔和字体
QPen pen = painter.pen();
pen.setColor(Qt::red);
QFont font = painter.font();
font.setBold(true);//加粗
font.setPixelSize(50);//改变字体大小
painter.setPen(pen);
painter.setFont(font);
painter.drawText(image.rect(),Qt::AlignCenter,"Hello");
//将Hello写在Image的中心
int n = 100;//这个为图片的压缩度。0/100
image.save("text.png","PNG",n);
//将画好的图片保存起来。
//可以将png改为其他格式
QImage image = QPixmap("C:/Users/Administrator/Pictures/1.jpg").toImage();//绝对路径
//以你原来的那张图片来
//构造一个image
QPainter painter(&image); //为这个QImage构造一个QPainter
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
//设置画刷的组合模式CompositionMode_SourceOut这个模式为目标图像在上。
//改变画笔和字体
QPen pen = painter.pen();
pen.setColor(Qt::red);
QFont font = painter.font();
font.setBold(true);//加粗
font.setPixelSize(50);//改变字体大小
painter.setPen(pen);
painter.setFont(font);
painter.drawText(image.rect(),Qt::AlignCenter,"Hello");
//将Hello写在Image的中心
int n = 100;//这个为图片的压缩度。0/100
image.save("text.png","PNG",n);
//将画好的图片保存起来。
//可以将png改为其他格式
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯