QPainter转换成QImage

3

我正在尝试使用以下代码将QGraphicsScene渲染为图像,使用的是Qt5

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");

问题在于距离图像边界太近的点未被渲染。有办法强制设置填充/边距吗?

1
不相关:在绘制完之后设置绘图选项毫无意义。是的,有一种方法可以获取边距:获取比“sceneRect”更大的图像,将画家转换为稍微偏移原点,并将实际绘图区域传递给“render”。 - peppe
1个回答

2
您可以通过渲染到一个较大的图像,然后裁剪到较小的图像来实现垫片。
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");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接