c++ - 如何在 QPixmap 上应用深色 mask 层?

标签 c++ qt pyqt pyside qpixmap

我是 Qt 的新手,一直在做大量的阅读和练习。 我已经搜索了很多,但找不到任何示例。

我有一个 QPixmap 对象,我向其加载了一个 .png 图像。 我需要创建此 QPixmap 的拷贝,并应用深色蒙版。

基本上我希望这个 QPixmap 的图像被一层不透明度设置为 50% 的纯黑色覆盖。

我知道如何设置 QPixmap 图像的不透明度,但如何添加一层不透明的纯黑色?

谢谢!

最佳答案

您可以使用 QPainter 和半透明的 QBrush 将深色层绘制到您的 QPixmap 上。

假设 pic 是加载了您的图像的 QPixmap:

QPainter p(&pic);
QBrush b(QColor(0,0,0,128)); // adjust color and alpha to taste
p.setBrush(b);
p.drawRect(0, 0, 200, 200);

效果(之前/之后):

enter image description here    vs    enter image description here

不透明的黑色边框可以通过在绘画前设置半透明笔来去除。
如果您想保留原始图像,请在应用“掩码”之前复制像素图。

关于c++ - 如何在 QPixmap 上应用深色 mask 层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083967/

相关文章:

c++ - 友元函数访问静态库中定义的类的私有(private)成员

c++ - 未声明的标识符

c++ - 为什么我的 C++11 分配器的 dtor 被调用了两次?

c++ - C++中的数组初始化

c++ - 渲染具有透明度的纹理时 OpenGL 不需要的像素

android - 安卓上的 PyQt

Qt如何知道widget,用户上次在哪个元素上设置了焦点

c++ - 使用Qt在mac窗口中设置脏点

python - 复制 pyqt 表选择,包括列标题和行标题

python - 等到 QtWidgets.QMainWindow 关闭后再继续