本文主要是介绍QT多张图片的重叠显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
QT 中可以加载显示多张图片,如果同时显示多张图片,并且显示图片重叠的效果,就要使用CompositionMode了。
注意:设置模式只能设置图片!
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
class QImage;namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();void paintEvent(QPaintEvent *event)override;private:Ui::MainWindow *ui;QImage* firstImage=nullptr;QImage* secondImage=nullptr;
};#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QPainter>
#include <QImage>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);firstImage = new QImage(500,500,QImage::Format_ARGB32_Premultiplied);secondImage = new QImage(500,500,QImage::Format_ARGB32_Premultiplied);
}MainWindow::~MainWindow(){delete ui;
}void MainWindow::paintEvent(QPaintEvent *event){//绘制第一张图片QPainter painterFirst(firstImage);firstImage->fill(Qt::transparent);//设置透明painterFirst.setBrush(Qt::red);painterFirst.drawRect(50,50,100,100);//绘制第二张图片QPainter painterSecond(secondImage);secondImage->fill(Qt::transparent);painterSecond.setBrush(Qt::blue);painterSecond.drawRect(100,100,100,100);//设置图片的重叠模式painterFirst.setCompositionMode(QPainter::CompositionMode_SourceOver);//重叠图片painterFirst.drawImage(0, 0, *secondImage);//展示图片QPainter painter2(this);painter2.drawImage(0,0,*firstImage);
}
以下是几种重叠模式效果图:
CompositionMode_Source
CompositionMode_Destination
CompositionMode_SourceOver
CompositionMode_DestinationOver
CompositionMode_SourceIn
CompositionMode_DestinationIn
CompositionMode_Plus
aaa
这篇关于QT多张图片的重叠显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!