Vraag Hoe een afbeelding toevoegen aan de bovenkant van een andere afbeelding?


Ik wil het verschil laten zien tussen een getrimde clip en een niet getrimde clip in mijn videobewerkingsprogramma, d.w.z. ik wil een filmafbeelding op mijn thumbnail toevoegen voor een getrimde clip. Hoe kan ik dit doen?

Het zou gewoon om het verschil te zien tussen een afbeelding en een video in onze galerij-applicatie.

Hoe een afbeelding op de top van een ander in Qt toevoegen?


10
2017-12-07 10:08


oorsprong


antwoorden:


Open de QPainter op de onderste afbeelding en teken de bovenste afbeelding met de methoden drawPixmap () / drawImage ().

QPixmap base, overlay; // come from your code
{
    QPainter painter(base);
    painter.drawPixmap(100, 100, overlay);
}

Als uw overlay een alfakanaal bevat (bijvoorbeeld een fraai PNG-pictogram) en uw basisafbeelding dat niet doet, moet u een nieuwe QPixmap maken met een alfakanaal en beide afbeeldingen erin tekenen:

QPixmap base, overlay; // come from your code
QPixmap result(base.width(), base.height());
result.fill(Qt::transparent); // force alpha channel
{
    QPainter painter(&result);
    painter.drawPixmap(0, 0, base);
    painter.drawPixmap(100, 100, overlay);
}

QPixmaps en QImages kunnen onderling uitwisselbaar worden gebruikt, hoewel niet alle combinaties goede prestaties leveren).


21
2017-12-07 17:27



Als het gaat om het tonen van een afbeelding boven een andere, dan zou je er ook mee kunnen gaan dit antwoord.

QGridLayout *layout = new QGridLayout(widget);
Pixmap base, overlay;
QLabel *background = new Label();
background->setPixmap(&base);
QLabel *lOverlay = new QLabel();
lOverlay->setPixmap(&overlay);

//label gets positioned above textBrowser and is an overlay
layout->addWidget(background, 0, 0, Qt::AlignLeft | Qt::AlignTop);
layout->addWidget(lOverlay, 0, 0, Qt::AlignRight | Qt::AlignBottom); 

Natuurlijk dan de QPixbuf van de achtergrond bevat niet de QPixbuf van de overlay-afbeelding, maar het lijkt alleen te doen.


0
2018-03-12 06:50