Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 将QGraphicscene保存到PNG文件时出现问题_Qt_Qgraphicsview_Qgraphicsscene_Qpainter_Qimage - Fatal编程技术网

Qt 将QGraphicscene保存到PNG文件时出现问题

Qt 将QGraphicscene保存到PNG文件时出现问题,qt,qgraphicsview,qgraphicsscene,qpainter,qimage,Qt,Qgraphicsview,Qgraphicsscene,Qpainter,Qimage,我有一个qgraphicsecene对象,只要我没有对该项目进行任何修改(如滚动或缩放),就可以保存到PNG文件中。执行滚动或缩放后,保存的图像变小,许多透明像素填充到所需的尺寸。我认为这与需要将QGraphicsView的可见区域渲染到保存的QImage有关,但我很难弄清楚这一点 下面是我的一些代码: void myClass::saveSceneAsPNGImage(QString path, int width) { Scene->clearSelection();

我有一个
qgraphicsecene
对象,只要我没有对该项目进行任何修改(如滚动或缩放),就可以保存到PNG文件中。执行滚动或缩放后,保存的图像变小,许多透明像素填充到所需的尺寸。我认为这与需要将
QGraphicsView
的可见区域渲染到保存的
QImage
有关,但我很难弄清楚这一点

下面是我的一些代码:

void myClass::saveSceneAsPNGImage(QString path, int width)
{
    Scene->clearSelection();

    double scaleFactor = (width / Scene->sceneRect().size().width());

    QImage image(Scene->sceneRect().size().width() * scaleFactor, 
        Scene->sceneRect().size().height() * scaleFactor, 
        QImage::Format_ARGB32);

    QPainter painter(&image);
    painter.setRenderHint(QPainter::Antialiasing);
    Scene->render(&painter);
    image.save(path);
}

你能解释一下你想在最后得到什么结果吗?我想把我在GUI中看到的场景(滚动和缩放的方式)保存到一个PNG文件中,其尺寸可能与场景的原始大小不同。也许你可以上传这两张图片,有无缩放。