2015-07-25 4 views
0

У меня есть два изображения. Мне нужно супер накладывать/перекрывать изображение друг на друга. Первое изображение или базовое изображение размером 160x128, пусть второе изображение будет 120x100. Как я перекрываю друг друга?перекрытие изображения в QT

Вот мой код, я воспринял это как исх:

https://idvlpsw.wordpress.com/2008/03/19/use-qimage-to-create-a-composite-image-ie-one-image-with-another-overlaid-on-top-of-it/

#include "mainwindow.h" 
#include <QApplication> 
#include "mainwindow.h" 
#include <QPixmap> 
#include <QFile> 
#include <QLabel> 
#include <QPainter> 


QLabel *lbl= NULL ; 

QImage baseImage("/usr/image1.jpg"); 
QImage overlayLogoff("/usr/image2.jpg"); 


QImage createImageWithOverlay(const QImage& baseImage, const QImage& overlayImage) 
{ 
    QImage imageWithOverlay = QImage(baseImage.size(), QImage::Format_RGB16); 
    QPainter painter(&imageWithOverlay); 

    painter.setCompositionMode(QPainter::CompositionMode_Source); 
    painter.fillRect(imageWithOverlay.rect(), Qt::transparent); 

    painter.setCompositionMode(QPainter::CompositionMode_SourceOver); 
    painter.drawImage(0, 0, baseImage); 

    painter.setCompositionMode(QPainter::CompositionMode_SourceOver); 
    painter.drawImage(0, 0, overlayImage); 

    painter.end(); 

    return imageWithOverlay; 
} 

QImage logoffImage = createImageWithOverlay(baseImage, overlayLogoff); 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    lbl = new QLabel(); 

    createImageWithOverlay(baseImage, overlayLogoff); 
return a.exec(); 
} 

Здесь я не могу получить любое изображение? Нужно ли использовать функцию show для отображения изображения.

Пожалуйста, помогите. Спасибо

ответ

0

Посмотрите на свой код, я думаю, вы пытаетесь отобразить составное изображение в QLabel.
Но для этого кода, чтобы работать, составное изображение должно быть прикреплено к QLabel, а сам QLabel должен быть сделан видимым:

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QLabel * lbl = new QLabel(); 
    QImage composite = createImageWithOverlay(baseImage, overlayLogoff); 
    lbl->setPixmap(QPixmap::fromImage(composite)); 
    lbl->show(); 

    return a.exec(); 
} 

PS: вы должны стараться избегать определения переменных в глобальном масштабе столько, сколько возможное.

Смежные вопросы