旋转QImage时如何用透明背景填充空白?

时间:2014-06-04 03:47:00

标签: qt qtgui

当我在Qt中旋转图像时,它会自动放大图像以封装更大,更智能的尺寸。然而,它填充了新创建的空白与白色,这不是我想要的。如何让它填充完全透明的颜色?

这可能是代码。

QImage lSource("/path/to/an/image/file");
QTransform lRotation;
lRotation.rotate(30.0);
QImage lRotated(lSource.transformed(lRotation, Qt::SmoothTransformation));
ui.labelImage->setPixmap(QPixmap::fromImage(lRotated));

非常感谢!

1 个答案:

答案 0 :(得分:0)

基于我上面的评论......

我怀疑,旋转图像的空白区域是透明的,白色是标签的背景颜色。如果要为旋转的图像设置特定背景,可以执行以下操作:

// Create rotated image.
QImage lSource("source.png");
QTransform lRotation;
lRotation.rotate(30.0);
QImage lRotated(lSource.transformed(lRotation, Qt::SmoothTransformation));

// Create resulting image with specific background.
QImage img(lRotated.size(), QImage::Format_ARGB32);
img.fill(Qt::red); // Set the red background
QPainter p(&img);
p.drawImage(0, 0, lRotated);

QLabel l;
l.setPixmap(QPixmap::fromImage(img));
l.show();