我想在图像上绘制文字。我使用此代码,但我在图像上看不到任何文字。
void ImageSaver::save(const QString &path) const {
QImage image(img_);
QPainter p(&image);
p.setPen(QPen(Qt::red));
p.setFont(QFont("Times", 12, QFont::Bold));
p.drawText(image.rect(), Qt::AlignCenter, "Text");
image.save(path);
}
答案 0 :(得分:3)
QPainter
必须在图像有效之前完成I / O操作。您可以在 QPainter
对象销毁后执行此操作,也可以使用begin
/ end
方法。
bool ImageSaver::save(const QString &path) const {
QImage image(img_);
QPainter p;
if (!p.begin(&image)) return false;
p.setPen(QPen(Qt::red));
p.setFont(QFont("Times", 12, QFont::Bold));
p.drawText(image.rect(), Qt::AlignCenter, "Text");
p.end();
return image.save(path);
}
P.S。:我已添加bool
返回,以便更好地进行错误跟踪。