Qt-更改QPixmap的不透明度
Qt- Change opacity of QPixmap
如何更改QPixmap的不透明度?
我已经设置了一个图像作为背景,实际上我想改变它的不透明度,这是我的代码:
呼叫.h:
private:
QPixmap m_avatar;
调用.cpp:
void Call::resizeEvent(QResizeEvent *e)
{
QPalette pal = palette();
pal.setBrush(backgroundRole(), m_avatar.scaled(e->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
setPalette(pal);
}
我已经更改了resizeEvent函数,但它不会改变背景的不透明度。
void Call::resizeEvent(QResizeEvent *e)
{
QPixmap result_avatar(m_avatar.size());
result_avatar.fill(Qt::transparent);
QPainter painter;
painter.setOpacity(0.5);
painter.begin(&result_avatar);
painter.drawPixmap(0, 0, m_avatar);
painter.end();
QPalette pal = palette();
pal.setBrush(backgroundRole(), result_avatar.scaled(e->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
setPalette(pal);
}
有什么建议吗?
您没有使用本地QPainter
对象。根据QWidget事件:
每当需要重新绘制小部件时,就会调用
paintEvent()
。每个显示自定义内容的小部件都必须实现它。绘画使用QPainter
只能发生在paintEvent()
或函数中由CCD_ 5调用
它在这里工作:
void Call::paintEvent(QPaintEvent *)
{
// create a new object scaled to widget size
QPixmap result_avatar = m_avatar.scaled(size());
QPainter painter(this);
painter.setOpacity(0.5);
// use scaled image or if needed not scaled m_avatar
painter.drawPixmap(0, 0, result_avatar);
}
像素图案例更新
如果只需要使用QPainter
在像素图上以一定的不透明度进行绘制,则不透明度必须仅在QPainter::begin()
激活QPainter
之后设置。因此,在改变顺序后,像素图result_avatar
有两个图像(一个调整大小为不透明度1,原始像素图在顶部为不透明度0.5(:
QPainter painter;
painter.begin(&result_avatar);
painter.setOpacity(0.5);
painter.drawPixmap(0, 0, m_avatar);
painter.end()
相关文章:
- 如何从透明度计算不透明度?
- 解决方法:QPixmap:在GUI线程之外使用pixmap是不安全的
- 尝试使用 Qt 库中的 QPixmap 将图像拆分为多个块。关于他的复制方法的工作方式,我有什么不明白的吗?
- 我正在将QPixmap传递给QAbstractButton::setIcon而不是QIcon,但我没有得到错误...为什么?
- 在 QGraphicsScene 中拖动 QPixmap:如何避免 lambda 参数中不允许'auto'
- glcolor4f-绘制时无法获得完全不透明度
- VTK抽象选择器,用于不同不透明度值的多个参与者
- 在openFrameworks中,是否可以在使用ofxPiMapper时更改我的fbo源的不透明度
- 如何使用GDI 显示具有25%不透明度的PNG图像?(MFC)
- 为什么我不能将此特定 PNG 加载到我的 QPixmap 中?
- Win32 API:透明度不起作用
- 在QPixmap上渲染QGraphicsItem:聚合'QWidget w'类型不完整,无法定义
- VTK :如何将不透明度设置为同一演员的不同对象
- SDL_Texture不透明度
- QPixmap加载不起作用
- 如何在GDI+中控制TextureBrush的不透明度
- 如何在QT画笔中设置不透明度
- QGraphicsObject 不显示 QPixmap
- Qt-更改QPixmap的不透明度
- 不能改变Cocos2d-x MenuItemToggle元素的不透明度