Как заполнить пустоту прозрачным фоном при вращении QImage?


Когда я поворачиваю изображение в 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 2
qt

1 ответ:

На основе моего комментария выше...

Я подозреваю, что пустые области повернутого изображения прозрачны, а белый цвет является фоновым цветом вашей метки. Если вы хотите установить определенный фон для вашего повернутого изображения, вы можете сделать следующее:

// 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();