合并多个 QPixmaps 的问题
Problems with merging multiple QPixmaps
我正在开发一个类似画家的应用程序,我希望我的应用程序有多个图层用于不同的绘图。为此,我有一个数组,其中包含具有透明背景的 QPixmaps,并且我有一个合并两个 QPixmaps 的函数(在另一个上绘制)。是这样完成的:
void MeasuresWidget::MergePixmaps(QPixmap source, QPixmap target)//draw source on target
{
QPainter painter(&target);
painter.drawPixmap(target.rect(),source,source.rect());
painter.end();
imageLabel->setPixmap(target);
}
我 100% 确定像素图数组(AllLayers 数组)包含我想要的所有绘图。现在我想始终如一地将所有图纸与原始图像合并。以下是我正在努力实现这一目标的方法:
void MeasuresWidget::on_actionAct_triggered()
{
ForMerging = &OriginalImage;
for(int i=0;i<5;i++)
MergePixmaps(AllLayers[i], *ForMerging);
}
其中 ForMerging 是用于合并的临时 QPixmap 对象,而 OriginalImage 无疑是包含原始图像的 QPixMap。
同样,我 100% 确定所有图层都包含它在透明背景上的图像。我面临的问题是,结果原始图像仅与最后一张图合并,即与 AllLayers[4]。例如,如果我使 i 到 运行 从 0 到 2(不包括),结果将是仅与 AllLayers[1] 合并的原始图像。我已经为这个问题苦苦挣扎了一段时间,不知道可能出了什么问题,所以我正在寻求任何可能的帮助。
尝试在对 MergePixmaps 的同一次调用中合并所有 QPixmap。为此,将 MergePixmap 函数中的 Source
变量更改为 AllLayers
对象,如下所示:
void MeasuresWidget::MergePixmaps(AllLayers *source, QPixmap target)//draw source on target
{
QPainter painter(&target);
for(int i = 0; i < source->lenght();i++){
painter.drawPixmap(target.rect(),source->at(i),source->at(i).rect());
}
painter.end();
imageLabel->setPixmap(target);
}
我正在开发一个类似画家的应用程序,我希望我的应用程序有多个图层用于不同的绘图。为此,我有一个数组,其中包含具有透明背景的 QPixmaps,并且我有一个合并两个 QPixmaps 的函数(在另一个上绘制)。是这样完成的:
void MeasuresWidget::MergePixmaps(QPixmap source, QPixmap target)//draw source on target
{
QPainter painter(&target);
painter.drawPixmap(target.rect(),source,source.rect());
painter.end();
imageLabel->setPixmap(target);
}
我 100% 确定像素图数组(AllLayers 数组)包含我想要的所有绘图。现在我想始终如一地将所有图纸与原始图像合并。以下是我正在努力实现这一目标的方法:
void MeasuresWidget::on_actionAct_triggered()
{
ForMerging = &OriginalImage;
for(int i=0;i<5;i++)
MergePixmaps(AllLayers[i], *ForMerging);
}
其中 ForMerging 是用于合并的临时 QPixmap 对象,而 OriginalImage 无疑是包含原始图像的 QPixMap。 同样,我 100% 确定所有图层都包含它在透明背景上的图像。我面临的问题是,结果原始图像仅与最后一张图合并,即与 AllLayers[4]。例如,如果我使 i 到 运行 从 0 到 2(不包括),结果将是仅与 AllLayers[1] 合并的原始图像。我已经为这个问题苦苦挣扎了一段时间,不知道可能出了什么问题,所以我正在寻求任何可能的帮助。
尝试在对 MergePixmaps 的同一次调用中合并所有 QPixmap。为此,将 MergePixmap 函数中的 Source
变量更改为 AllLayers
对象,如下所示:
void MeasuresWidget::MergePixmaps(AllLayers *source, QPixmap target)//draw source on target
{
QPainter painter(&target);
for(int i = 0; i < source->lenght();i++){
painter.drawPixmap(target.rect(),source->at(i),source->at(i).rect());
}
painter.end();
imageLabel->setPixmap(target);
}