我有一个简单的Qt部件。它是一个应用简单的CSS样式的QLabel
。这种风格的重要部分是圆形的边框:
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");
我得到了这个(在图像编辑器中打开图像以清楚地演示一个问题):
注意,在拐角处是如何不保持透明度的。有什么问题吗?我怎样才能正确渲染它?
我尝试过这样做,以测试QImage是否能够保存alpha通道,以及我的图像编辑器是否正确地显示了它:
bitmap.fill(QColor::fromRgba(qRgba(0, 0, 0, 0)));
bitmap.save("C:/1.png");
它工作的很好,我可以看到透明的格子图案。
发布于 2013-12-02 10:14:11
这就是诀窍:
QImage bitmap(label->size(), QImage::Format_ARGB32);
bitmap.fill(Qt::transparent);
QPainter painter(&bitmap);
label->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);
https://stackoverflow.com/questions/20324409
复制相似问题