结果展示:
code很简单:
QRectF size = pItem->boundingRect();
QPixmap pix(size.width(),size.height());
QPainter painter;
pix.fill(Qt::transparent);
painter.begin(&pix);
QStyleOptionGraphicsItem stye;
pItem->paint(&painter,&stye);
painter.end();
pix.save("C:/Item.png");
// print text
QPixmap textpix(itemtext->boundingRect().width(),itemtext->boundingRect().height());
textpix.fill(Qt::white);
painter.begin(&textpix);
//QStyleOptionGraphicsItem stye;
itemtext->paint(&painter,&stye,0);
painter.end();
textpix.save("C:/textitem.png");
QRectF size = pItem->boundingRect();
size.setTopLeft(pItem->scenePos());
size.setWidth(pItem->boundingRect().width());
size.setHeight(pItem->boundingRect().height());
QRectF target(scene->sceneRect());
//QPixmap pixmap(size.width(),size.height());
QPixmap pixmap(target.width(),target.height());
QPainter painter(&pixmap);
//QRectF target(0,0,62,62);
//scene->render(&painter, target, size);
scene->render(&painter/*, target, size*/);
其实也可以通过Scene的render中target和source生成想要的区域。
另外,通过painter生成Item时,如果有旋转角度,则Item图片不包含。