作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是Qt / Embedded的新手。我想使用QPainter
在QPixmap
上绘制内容,该内容将添加到QGraphicsScene
中。这是我的代码。但是它没有在像素图上显示图形。它仅显示黑色像素图。
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()
函数返回。如果要在添加像素图后对其进行更新,则需要调用返回的setPixmap()
对象的QGraphicsPixmapItem
函数。
所以:
...
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
...
关于qt - 如何在QPixmap上使用QPainter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888795/
我是一名优秀的程序员,十分优秀!