Как создать файл изображения из QGraphicsScene / QGraphicsView? - PullRequest
23 голосов
/ 17 сентября 2011

При наличии QGraphicsScene или QGraphicsView возможно ли создать файл изображения (предпочтительно PNG или JPG)?Если да, то как?

Ответы [ 3 ]

30 голосов
/ 25 июля 2012

После решения этой проблемы, здесь достаточно улучшений, чтобы получить новый ответ:

scene->clearSelection();                                                  // Selections would also render to the file
scene->setSceneRect(scene->itemsBoundingRect());                          // Re-shrink the scene to it's bounding contents
QImage image(scene->sceneRect().size().toSize(), QImage::Format_ARGB32);  // Create the image with the exact size of the shrunk scene
image.fill(Qt::transparent);                                              // Start all pixels transparent

QPainter painter(&image);
scene->render(&painter);
image.save("file_name.png");
28 голосов
/ 17 сентября 2011

Я не пробовал это, но это идея, как это сделать.

Вы можете сделать это несколькими способами. Одна форма выглядит следующим образом:

QGraphicsView* view = new QGraphicsView(scene,this);
QString fileName = "file_name.png";
QPixmap pixMap = view->grab(view->sceneRect().toRect());
pixMap.save(fileName);
//Uses QWidget::grab function to create a pixmap and paints the QGraphicsView inside it. 

Другая - использовать функцию рендеринга QGraphicsScene :: render ():

QImage image(fn);
QPainter painter(&image);
painter.setRenderHint(QPainter::Antialiasing);
scene.render(&painter);
image.save("file_name.png")
8 голосов
/ 04 марта 2015

grabWidget устарел, используйте grab.И вы можете использовать QFileDialog

QString fileName= QFileDialog::getSaveFileName(this, "Save image", QCoreApplication::applicationDirPath(), "BMP Files (*.bmp);;JPEG (*.JPEG);;PNG (*.png)" );
    if (!fileName.isNull())
    {
        QPixmap pixMap = this->ui->graphicsView->grab();
        pixMap.save(fileName);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...