QT-是否有将几张图像组合成一张的类?

| 我想做一些图像矩阵,在一些小部件中显示预览,然后将其全部保存到-例如-
jpg
文件中。我知道我可以将每个像素的每个图像像素复制到一个大像素中,但是我想这不是一种有效的方法……还有什么更好的解决方案吗? 感谢您的建议。     
已邀请:
        与其复制单个像素,不如直接将每个单个图像绘制在足够大的
QPixmap
上,以容纳所有组合的图像。然后可以通过如下方式在拼贴上绘制每个单独的图像来生成拼贴(未测试的代码):
QList<QPixmap> images;
QPixmap collage;

// Make sure to resize collage to be able to fit all images.
...

for (QList<QPixmap>::const_iterator it = images.begin(); it != images.end(); ++it)
{
    int x = 0;
    int y = 0;

    // Calculate x & y coordinates for the current image in the collage.
    ...
    QPainter painter(&collage);
    painter.drawPixmap(
            QRectF(x, y, (*it).width(), (*it).height()), *it,
            QRectF(0, 0, (*it).width(), (*it).height()));
}
注意,也可以使用
QImage
代替
QPixmap
QPixmap
已针对屏幕显示进行了优化。有关更多详细信息,请参见Qt文档。     
        不,您不想按像素进行像素化。 QImage是一个QPaintDevice。因此,您可以加载它们,将它们相互渲染,并根据需要将它们保存为几种格式。并且当然在屏幕上显示它们。     
        上面的代码对我不起作用,我不知道为什么。 我需要的是像这样的拼贴画:  PicA | PicB |图片... | ... | 我发现与QImage类似,并且此代码有效。 (经过测试的代码):
const int S_iconSize = 80;     //The pictures are all quadratic.
QList<const QPixmap*> t_images;//list with all the Pictures, PicA, PicB, Pic...
QImage resultImage(S_iconSize*t_images.size(), S_iconSize, QImage::Format_ARGB32_Premultiplied);
QPainter painter;

painter.begin(&resultImage);
for(int i=0; i < t_images.size(); ++i)
{
    painter.drawImage(S_iconSize*i, 0, t_images.at(i)->toImage(), 0, 0, S_iconSize, S_iconSize, Qt::AutoColor);
}
painter.end();

QPixmap resultingCollagePixmap = QPixmap::fromImage(resultImage);
我知道这很丑陋,因为QImage转换为QPixmap,反之亦然,但是它可以工作。 因此,如果有人有想法如何运行上面的代码(来自Ton van den Heuvel),我将很高兴。 (也许只是缺少的QPainter ???) 问候     

要回复问题请先登录注册