qt5 - QPainter 到 QImage

标签 qt5 qgraphicsview qgraphicsscene

我正在尝试使用 Qt5 使用以下代码将 QGraphicsScene 渲染到图像:

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

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

最佳答案

您可以通过渲染成较大的图像然后裁剪成较小的图像来实现 pad。

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

关于qt5 - QPainter 到 QImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39963144/

相关文章:

qt - 拍摄 qgraphicsview 的快照

qt - 如何去除qgraphicsview中绘制的鬼线

macos - QMake 和应用程序包

python - 使 QGraphisItem 适合 View

c++ - Qt mouseReleaseEvent() 没有触发?

python - PyQt4滚动故障

qt4 - 单个 QGraphicsScene 的多个 QGraphicsView

c++ - QGraphicsScene 背景画笔偏移?

qt - 如何在 Qt Creator 中使用 qmlint?

c++ - 如何对人类可读格式的文件大小进行排序?