我正在尝试使用以下代码生成pixmaps
QList<QPixmap> pixmapList;
for (int i=0;i<50;++i){
QPixmap pixmap = QPixmap(10050,10050);
pixmap.fill(Qt::transparent);
pixmapList<<pixmap;
}
以上部分有效。我想稍后在那些像素图上画画,例如。
QPixmap pixmap = pixmapList[10];
QPainter painter(&pixmap);
painter.drawPixmap(....); // this pixmap is 10*10
pixmapList[10]=pixmap;
或
QPainter painter(&pixmapList[10]);
painter.drawPixmap(....); // this pixmap is 10*10
但他们都给了我“QPainter :: begin:Paint device return engine == 0,type:2”。我可以问一下在pixmapList上绘制pixmaps的正确方法吗?非常感谢!
答案 0 :(得分:0)
您的代码没问题,只是像素图太大(每个占用约400MB)。
使pixmaps变小后,它工作正常(显示为Qt 5):
#include <QGuiApplication>
#include <QPixmap>
#include <QPainter>
int main(int argc, char *argv[])
{
QGuiApplication a(argc, argv);
QList<QPixmap> pixmapList;
for (int i=0;i<50;++i){
QPixmap pixmap = QPixmap(1000,1000);
pixmap.fill(Qt::transparent);
pixmapList<<pixmap;
}
QPainter painter(&pixmapList[10]);
painter.drawLine(0, 0, 100, 100);
return 0;
}