将QGraphicsScene渲染到QImage导致对象放置在QImage的一侧

时间:2015-04-22 14:34:43

标签: c++ image qt

我的QGraphicsScene相当大,而QGraphicsView只适合其中的一小部分。

我想打印/保存QGraphicsScene

OutputView::OutputView(QWidget *parent)
    : QGraphicsView(parent) {...}

void OutputView::saveToImage() 
{
    QImage image(scene()->sceneRect().size().toSize(), QImage::Format_Mono);
    image.fill(Qt::transparent);
    QPainter painter(&image);
    render(&painter);
    image.save("output.png");
}

当然,在我进行实验时,我将对象放在视口的中心......

保存的图像包含所有对象,但对象的位置位于图像的左侧

输入: enter image description here

输出: enter image description here (来自windows photo viewer的截图)

似乎创建的图像具有正确的大小,但之后只渲染视口内容 - 视口左上角位于图像的左上角,图像的其余部分为空。

为什么会这样?我做错了什么?

更新

尝试

fitInView(scene()->sceneRect());

导致视口显示整个图像,缩放...但保存的图像仍包含视口(仅非常小)

enter image description here

1 个答案:

答案 0 :(得分:0)

答案在我的补充说明中。

我应该做的

scene()->render(&painter);

我正在渲染视口....而不是场景