Как добавить изображение поверх другого изображения? - PullRequest
12 голосов
/ 07 декабря 2010

Я хочу показать разницу между обрезанным клипом и не обрезанным клипом в моем приложении для редактирования видео, т.е. я хочу добавить маленькое изображение фильма на миниатюру для обрезанного клипа. Как я могу это сделать?

Было бы просто показать разницу между изображением и видео в нашем приложении-галерее.

Как добавить изображение поверх другого в Qt?

Ответы [ 2 ]

23 голосов
/ 07 декабря 2010

Откройте QPainter на нижнем изображении и нарисуйте верхнее изображение, используя методы drawPixmap () / drawImage ().

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

Если ваше наложение содержит альфа-канал (например, необычный значок PNG) и вашбазового изображения нет, вам следует создать новый QPixmap с альфа-каналом и нарисовать в нем оба изображения:

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 и QImages можно использовать взаимозаменяемо, хотя не все комбинации дают хорошую производительность).

0 голосов
/ 12 марта 2018

Если вы просто показываете изображение поверх другого, то вы также можете использовать этот ответ .

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); 

Конечно, тогда QPixbuf фона не содержит QPixbuf оверлейного изображения , но выглядит только так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...