如何在QPixmap上使用QPainter [英] How to use QPainter on QPixmap

查看:21
本文介绍了如何在QPixmap上使用QPainter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Qt/Embedded的新手。我想使用QPainter在将添加到QGraphicsSceneQPixmap上绘制内容。这是我的代码。但它不会显示像素图上的图形。它只显示黑色像素图。

int main(int argc, char **argv) {

  QApplication a(argc, argv);

  QMainWindow *win1 = new QMainWindow();
  win1->resize(500,500);
  win1->show();


  QGraphicsScene *scene = new QGraphicsScene(win1);
  QGraphicsView view(scene, win1);
  view.show();
  view.resize(500,500);

  QPixmap *pix = new QPixmap(500,500);
  scene->addPixmap(*pix);

  QPainter *paint = new QPainter(pix);
  paint->setPen(*(new QColor(255,34,255,255)));
  paint->drawRect(15,15,100,100);

  return a.exec();
}

推荐答案

您需要先在位图上绘制,然后才能将其添加到场景中。当您将其添加到场景中时,场景将使用它来构造QGraphicsPixmapItem对象,该对象也由addPixmap()函数返回。如果要在添加后更新像素图,则需要调用返回的QGraphicsPixmapItem对象的setPixmap()函数。

也是:

...
QPixmap *pix = new QPixmap(500,500);
QPainter *paint = new QPainter(pix);
paint->setPen(*(new QColor(255,34,255,255)));
paint->drawRect(15,15,100,100);
scene->addPixmap(*pix); // Moved this line
...

或:

...
QPixmap *pix = new QPixmap(500,500);
QGraphicsPixmapItem* item(scene->addPixmap(*pix)); // Save the returned item
QPainter *paint = new QPainter(pix);
paint->setPen(*(new QColor(255,34,255,255)));
paint->drawRect(15,15,100,100);
item->setPixmap(*pix); // Added this line
...

这篇关于如何在QPixmap上使用QPainter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆