ich habe ein Problem beim export einer QGraphicsScene als PNG.
Ich möchte nicht die gesamte Scene, sondern nur die Items als PNG.
Dies kann ich durch itemsBoundingRect auch erreichen, aber dieses Rechteck ist zu weit.
Habe als beispiel angefügt, welches ein einzelnes Item enthält, welches 50x50 px groß ist, das Bild sollte also Quadratisch sein.
Mein Code:
Code: Alles auswählen
void MainWindow::on_actionExport_PNG_triggered()
{
QString file= QFileDialog::getSaveFileName(this,tr("export as png"));
//QMessageBox::about(this,file,file);
if(!file.endsWith(".png"))
file = file + ".png";
if(!file.isEmpty())
{
QPainter *pngPainter = new QPainter();
QRectF rect = scene->itemsBoundingRect();
//create space around the items
rect.setX(rect.x() - 20);
rect.setY(rect.y() - 20);
//rect.setWidth(rect.width() *0.7);
rect.setHeight(rect.height() + 20);
QRectF target = rect;
target.setX(0);
target.setY(0);
QImage *image = new QImage(target.size().toSize(), QImage::Format_ARGB32);
pngPainter->begin(image);
scene->render(pngPainter,target,rect);
pngPainter->end();
image->save(file);
delete pngPainter;
delete image;
}
}Irgendwie habe ich das Gefühl das es auch mit den Maßen der Scene zu hat, diese ist hier 1000 x 500, was den seitenverhältnissen im Bild Entspricht, aber dies ist nicht immer so.
Muss ich evtl. boundingRect durch ein eigenes ersetzen?
phlox