Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ [РЕШЕНО] Объединение изображений QPixMap

Автор: JuryS1806 21.6.2010, 1:15

Всем доброго времени суток.
Прошу помочь разобраться с использованием QPainter'a. А именно я хочу понять, как можно объединить несколько изображений, пусть даже одинаковых.

QPixmap originalPixmap = QPixmap::grabWindow(winId());

QImage t(QSize(1790, 1146),QImage::Format_RGB32);
//t.fill(Qt::transparent);

QPainter tp(&t);

tp.drawPixmap(0, 0, 895, 573,originalPixmap);
tp.drawPixmap(895, 0, 895, 573,originalPixmap);
tp.drawPixmap(0, 573, 895, 573,originalPixmap);
tp.drawPixmap(895, 573, 895, 573,originalPixmap);
tp.end();
t.save(theFile, "bmp");

При сохранении изображения размером 1790*1146 получается снова 895*573. И что не так никак не пойму.

Автор: ufna 21.6.2010, 8:49

проверяй что-то еще, к примеру theFile

у меня данный код работает именно так, как должен.

Автор: JuryS1806 21.6.2010, 20:32

Спасибо за участие в обсуждении проблемы. Но нет ! почему-то создается Image размером с PixMap и все тут!
я если честно уже заводил такую тему раньше. пытаюсь сохранить окно GL-виджета в высоком разрешении и этот код мне просто необходим, а то как то вывод в мелком разрешении даже несерьезно...

Автор: Алексей1153 21.6.2010, 20:59

JuryS1806, в таких случаях от автора топика нужен небольшой прикреплённый проектик, в котором проблема точно есть. Иначе гадать можно долго :)

Автор: JuryS1806 21.6.2010, 21:10

блин у меня 108 мб исходников, а не 300 кб

ну а к примеру если я в QImage загружу картинку, неужели это сработает ! ?

Автор: Алексей1153 21.6.2010, 21:14

Цитата(JuryS1806 @ 22.6.2010, 0:10) *
блин у меня 108 мб исходников, а не 300 кб

создай новый проект и скопируй туда участочек кода с глюком. Будет в зипе от силы 1 кб :)

Автор: JuryS1806 21.6.2010, 22:27

Еще раз хочу сказать спасибо ufna !

Вот в чем была проблема:

    if ( !ext.compare("bmp") )
     {
        /*
        QPixmap originalPixmap = QPixmap::grabWindow(winId());
        //originalPixmap.save(theFile, "bmp");
QImage t1 = originalPixmap.toImage();
t1.save(theFile,"bmp");

QImage t2(theFile);

QImage t(QSize(1790, 1146),QImage::Format_RGB32);
//t.fill(Qt::transparent);

QPainter tp(&t);
tp.drawImage(895, 573,t2);
tp.drawImage(0, 0,t2);
tp.drawImage(0, 573,t2);
tp.drawImage(895, 0,t2);

t.save(theFile,"bmp");
*/
        QPixmap originalPixmap = QPixmap::grabWindow(winId());
        //originalPixmap.save("/tmp/1.bmp", "bmp");

//QImage t1("/tmp/1.bmp");
        QImage t1 = originalPixmap.toImage();
QImage t(QSize(1790, 1146),QImage::Format_RGB32);
//t.fill(Qt::transparent);

QPainter tp(&t);
tp.drawImage(895, 573,t1);
tp.drawImage(0, 0,t1);
tp.drawImage(0, 573,t1);
tp.drawImage(895, 0,t1);

t.save("/tmp/2.bmp","bmp");

     }

    if ( !ext.compare("bmp") )
     {
        QPixmap originalPixmap = QPixmap::grabWindow(winId());
        originalPixmap.save(theFile, "bmp");
     }


Т.е. я два раза делал сохранение в один и тот же формат и естественно второй раз переписывал удачное сохранение.
Сорри , топик можно закрыть !
Спасибо за помощь !

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)