0
点赞
收藏
分享

微信扫一扫

Qt 实现遮罩层效果————附实现代码和效果图


文章目录

  • ​​1 使用两个label重叠来实现​​
  • ​​1.1 效果​​
  • ​​1.2 实现代码​​
  • ​​2 使用图像叠加模式(CompositionMode)​​

1 使用两个label重叠来实现

1.1 效果

Qt 实现遮罩层效果————附实现代码和效果图_遮罩层
Qt 实现遮罩层效果————附实现代码和效果图_遮罩层_02

Qt 实现遮罩层效果————附实现代码和效果图_.net_03

1.2 实现代码

//构造函数
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MyWidget)
{
ui->setupUi(this);
//实现麻将刚好覆盖label
QPixmap discardMj1_1(":/img/9.png");
discardMj1_1.scaled(ui->label->size(), Qt::IgnoreAspectRatio);
ui->label->setScaledContents(true);
ui->label->setPixmap(discardMj1_1);
}

//点击事件
//颜色按钮
void MyWidget::on_pushButton_clicked()
{
color = QColorDialog::getColor(Qt::red, this, tr("颜色对话框"));
ui->label_4->setStyleSheet(QString("background-color:rgba(%1 , %2 , %3 , 0.45);").arg(color.red()).arg(color.green()).arg(color.blue()));
// qDebug()<<"red:"<
}

设计师界面(一样的大小和位置):
Qt 实现遮罩层效果————附实现代码和效果图_构造函数_04
Qt 实现遮罩层效果————附实现代码和效果图_.net_05

2 使用图像叠加模式(CompositionMode)

QString imgPath = "D:/1.png";
QPixmap tempImg(imgPath);
QPainter painter(&tempImg);
painter.setCompositionMode(QPainter::CompositionMode_Multiply);
//RGB三色+透明度(数值0表示完全透明,数值255表示不透明)
painter.fillRect(tempImg.rect(), QColor(255, 100, 100, 220));
painter.end();

setCompositionMode可以设置的样式如下:

CompositionMode_DestinationIn

Qt 实现遮罩层效果————附实现代码和效果图_遮罩层_06

CompositionMode_ColorBurn

Qt 实现遮罩层效果————附实现代码和效果图_遮罩层_07

CompositionMode_ColorDodge
Qt 实现遮罩层效果————附实现代码和效果图_构造函数_08

CompositionMode_Darken
Qt 实现遮罩层效果————附实现代码和效果图_.net_09

CompositionMode_Destination
Qt 实现遮罩层效果————附实现代码和效果图_覆盖层_10

CompositionMode_DestinationAtop
Qt 实现遮罩层效果————附实现代码和效果图_覆盖层_11

CompositionMode_DestinationOut
Qt 实现遮罩层效果————附实现代码和效果图_遮罩层_12

CompositionMode_DestinationOver
Qt 实现遮罩层效果————附实现代码和效果图_Qt_13

CompositionMode_Difference
Qt 实现遮罩层效果————附实现代码和效果图_覆盖层_14

CompositionMode_Exclusion
Qt 实现遮罩层效果————附实现代码和效果图_.net_15

CompositionMode_HardLight

Qt 实现遮罩层效果————附实现代码和效果图_覆盖层_16

CompositionMode_Lighten
Qt 实现遮罩层效果————附实现代码和效果图_.net_17

CompositionMode_Multiply

Qt 实现遮罩层效果————附实现代码和效果图_遮罩层_18

CompositionMode_Overlay
Qt 实现遮罩层效果————附实现代码和效果图_遮罩层_19

CompositionMode_Plus
Qt 实现遮罩层效果————附实现代码和效果图_构造函数_20

CompositionMode_Screen

Qt 实现遮罩层效果————附实现代码和效果图_Qt_21

CompositionMode_SoftLight

Qt 实现遮罩层效果————附实现代码和效果图_.net_22

CompositionMode_Source

Qt 实现遮罩层效果————附实现代码和效果图_.net_23

CompositionMode_SourceAtop 取交集
Qt 实现遮罩层效果————附实现代码和效果图_Qt_24

CompositionMode_SourceIn
Qt 实现遮罩层效果————附实现代码和效果图_.net_25

CompositionMode_SourceOut 这种就直接挖空了

Qt 实现遮罩层效果————附实现代码和效果图_Qt_26

CompositionMode_SourceOver

Qt 实现遮罩层效果————附实现代码和效果图_覆盖层_27

CompositionMode_Xor

Qt 实现遮罩层效果————附实现代码和效果图_遮罩层_28

举报

相关推荐

0 条评论