qt关于两张图片重叠显示

时间:2024-04-01 21:57:27

方法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 为最后要的图片

设置重叠效果的参数如下:
qt关于两张图片重叠显示