Я занимаюсь разработкой приложения, похожего на художника, и хочу, чтобы в моем приложении было несколько слоев для разных рисунков.Для этой цели у меня есть массив, который содержит 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] .Я боролся с этой проблемой в течение некоторого времени и понятия не имею, что может быть не так, поэтому я ищу любую возможную помощь.