方法1:在paintEvent函数中
//在tabel中或者再widget的paintEvent事件中
QImage *imageA = new QImage(imageAfile);
QImage *imageB = new QImage(imageBfile);
QPainter painter(this); //新建画板
painter.setCompositionMode(QPainter::CompositionMode_SourceOver); //设置重叠效果
painter.begin(imageA);
painter.drawImage(0,0, *imageA);
painter.end();
painter.begin(this);
painter.drawImage(0,0, *imageB);
painter.end();
delete imageB;
delete image;
方法2:在image上再叠一张图
QImage *imageA = new QImage(imageAfile);
QImage *imageB = new QImage(imageBfile);
QPainter imagepainter(imageA ); //新建画板
imagepainter.setCompositionMode(QPainter::CompositionMode_SourceOver); //设置重叠效果
imagepainter.drawImage(0,0, *imageB);
imagepainter.end();
//imageA 就是重叠后得到的图片
方法3:自己操作像素点实现单一颜色替换重叠(由于用for循环对颜色判断,重叠会很粗超,复杂的图不建议用)
//白色部分为后叠上去图片的内容
QImage *imageA = new QImage(imageAfile);
QImage *imageB = new QImage(imageBfile);
QColor color(255,255,255); //白色
int i = 0;
int j = 0;
for(i = 0; i<w; i++)
{
for(j = 0; j<h; j++)
{
if(imageA ->pixelColor(i,j) == color)
{
imageA ->setPixelColor(i,j,imageB->pixelColor(i,j));
}
}
}
//imageA 为最后要的图片
设置重叠效果的参数如下: