3

我正在尝试在 QImage 上进行一些屏幕外渲染(没什么特别的,只是一些合成的缩略图)并且遇到了一个问题,即使是新的和据称是空白的 QImage 也会有一些非常严重的噪音:

截屏

重现的代码相当简单:

QImage image = new QImage(
        (int) b.width(), (int) b.height(),
        QImage.Format.Format_ARGB32);
painter.drawImage(0, 0, image);

b只是一个QRectF包含我正在绘制的 QGraphicsItem 的边界)

填充新图像似乎没有任何效果:

QPainter p = new QPainter(image);
p.fillRect(b, QColor.transparent);
p.end();

用任何纯色(例如白色)填充它可以消除噪音,但不幸的是我需要这个特定的图像是透明的。有什么办法可以消除噪音吗?

我正在使用 Qt Jambi(4.7.1-beta),但我认为这不会有很大的不同。

4

1 回答 1

7

从文档中QImage::QImage(int width, int height, Format format)

警告:这将创建一个带有未初始化数据的 QImage。在使用 QPainter 绘制图像之前,调用 fill() 以使用适当的像素值填充图像。

所以QImage::fill(uint pixelValue)在构建它之后调用你的图像。

于 2012-11-20T02:13:42.247 回答