我有一个简单的 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");
它工作正常,我可以看到透明度为方格图案。
这可以解决问题:
QImage bitmap(label->size(), QImage::Format_ARGB32);
bitmap.fill(Qt::transparent);
QPainter painter(&bitmap);
label->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)