Qt5 QPainter to QImage

Qt5 QPainter to QImage,qt5,qgraphicsview,qgraphicsscene,Qt5,Qgraphicsview,Qgraphicsscene,我正在尝试使用以下代码,使用Qt5向图像渲染qgraphicscene: QImage image(outputWidth, outputHeight, QImage::Format_ARGB32_Premultiplied); QPainter painter(&image); scene->render(&painter); painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTra

我正在尝试使用以下代码,使用
Qt5
向图像渲染
qgraphicscene

QImage image(outputWidth, outputHeight, QImage::Format_ARGB32_Premultiplied);
QPainter painter(&image);
scene->render(&painter);
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
image.mirrored().save("output.png");

问题是太靠近图像边界的点不会被渲染。有没有办法强制使用填充/边距?

您可以通过渲染到较大的图像,然后剪切到较小的图像来实现填充

int pad_width = 4;
QImage image;
QImage padded_image(outputWidth + 2 * pad_width, outputHeight + 2 * pad_width, QImage::Format_ARGB32_Premultiplied);
QPainter painter(&padded_image);
scene->render(&painter);
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
image = padded_image.copy(pad_width, pad_width, outputWidth, outputHeight);
image.mirrored().save("output.png");

无关:在绘制后设置绘制选项是没有意义的。是的,有一种获取边距的方法:获取一个比
场景更大的图像,变换画师以稍微偏移原点,然后传递到
渲染
实际绘图区域。