【发布时间】:2013-12-17 22:21:34
【问题描述】:
我有一个简单的 Qt 小部件。这是一个QLabel,应用了简单的 CSS 样式。样式的重要部分是圆形边框:
QString css("border-style: solid;"
"border-width: 3px;"
"border-radius: 7px;");
它在屏幕上显示得很好。超出边框的标签边角填充了透明色,因此在任何背景下看起来都很棒。以下是显示在另一个小部件(具有深灰色背景色)上时的外观:
现在,当我像这样将它渲染到 QImage 时
QImage bitmap(label->size(), QImage::Format_ARGB32);
QPainter painter(&bitmap);
balloon->render(&painter);
bitmap.save("C:/1.png");
我明白了(在图像编辑器中打开图像以清楚地展示问题):
请注意如何不保留角落周围的透明度。有什么问题?如何正确渲染?
P。 S. 我试过这个来测试 QImage 是否能够保存 alpha 通道,并且我的图像编辑器可以正确显示它:
bitmap.fill(QColor::fromRgba(qRgba(0, 0, 0, 0)));
bitmap.save("C:/1.png");
效果很好,我可以将透明度视为方格图案。
【问题讨论】:
标签: qt rendering transparency qwidget alpha-transparency