Time for action – rendering the scene's content to an image
Let's try to render a scene to an image. In order to do that, we take the following code snippet from our first example where we tried to put items on a scene:
QGraphicsScene scene; QGraphicsRectItem *rectItem = new QGraphicsRectItem(); rectItem->setRect(0,0,50,50); rectItem->setBrush(Qt::green); rectItem->setPen(QColor(255,0,0)); scene.addItem(rectItem);
The only change we make here is that we set a brush resulting in a green-filled rectangle with a red border, which was defined through setBrush()
and setPen()
. You can also define the thickness of the stroke by passing a QPen
object with the corresponding arguments. To render the scene, you only need to call render()
, which takes a pointer to a QPainter
pointer. This way, the scene can render its contents to any paint device the painter is pointing to. For us, a simple PNG file will do the job.
QRect rect = scene.sceneRect().toAlignedRect(); QImage image(rect.size(), QImage...