如何在另一个图像的顶部添加图像?

时间:2010-12-07 10:08:13

标签: qt

我想在我的视频编辑器应用程序中显示trimed剪辑和非trimed剪辑之间的区别,即我想在我的缩略图上添加一个小的电影图像作为一个trimed剪辑。我怎么能这样做?

只是在我们的图库应用程序中显示图像和视频之间的区别。

如何在Qt中添加另一个图像的顶部?

2 个答案:

答案 0 :(得分:23)

打开底部图像的QPainter,使用drawPixmap()/ drawImage()方法绘制顶部图像。

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

如果您的叠加层包含Alpha通道(例如奇特的PNG图标)而您的基本图像没有,则应创建一个带有Alpha通道的新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可以互换使用,但并非所有组合都能提供良好的性能。

答案 1 :(得分:0)

如果只是将图片显示在另一张图片上方,那么您也可以使用this answer

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不包含overlay-image QPixbuf,但它似乎只有。{/ p>