使用Qt在图像上绘制文本

时间:2016-07-02 04:52:58

标签: c++ qt qpainter qimage drawtext

我想在图像上绘制文字。我使用此代码,但我在图像上看不到任何文字。

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

1 个答案:

答案 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返回,以便更好地进行错误跟踪。