Russian Qt Forum
Сентябрь 30, 2024, 12:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Объединение сцен  (Прочитано 13888 раз)
StatuS74
Гость
« : Октябрь 26, 2011, 11:29 »

Возникла проблема. есть 2 сцены их надо сохранить одним графиком. по штучно всё ок сохраняет. а вот что бы из 2-х сцен получилась одна картинка не знаю как сделать. мб кто то сталкивался с подобным ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Октябрь 26, 2011, 11:36 »

Как-то так:
Код
C++ (Qt)
QImage img;
QPainter p( &img );
 
scene1->render( &p );
scene2->render( &p );
Записан

Qt 5.11/4.8.7 (X11/Win)
StatuS74
Гость
« Ответ #2 : Октябрь 26, 2011, 12:09 »

сделал вот так

Код:
 QImage img;
                img.fill(QColor(Qt::white).rgb());
                QPainter p( &img );

                scene->render( &p );
                scene2->render( &p );
                img.save(QString("/Graphic_test/%1.PNG").arg(serial1_1));
но не объединяет и не сохраняет =)
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Октябрь 26, 2011, 12:11 »

Ну а кто размер и формат картинки будет задавать?
Ты что под root-ом тестики пишешь, коли тебе позволительно писать в /Graphic_test  Непонимающий
« Последнее редактирование: Октябрь 26, 2011, 12:14 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
StatuS74
Гость
« Ответ #4 : Октябрь 26, 2011, 12:14 »

 а как задать формат на 2 сразу ? допустим на 1 я задаю формат вот так
Код:
QImage image(scene->width(), scene2->height(), QImage::Format_ARGB32_Premultiplied);
а как на 2 сразу я чето не знаю
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Октябрь 26, 2011, 12:20 »

а как задать формат на 2 сразу ? допустим на 1 я задаю формат вот так
Код:
QImage image(scene->width(), scene2->height(), QImage::Format_ARGB32_Premultiplied);
а как на 2 сразу я чето не знаю
Нужен результирующий размер картинки, а не размер сцены. Сцена будет масштабироваться под размеры картинки при рендеринге.
Записан

Qt 5.11/4.8.7 (X11/Win)
StatuS74
Гость
« Ответ #6 : Октябрь 26, 2011, 12:49 »

сделал как ты сказал но что то не работает

Код:
 QImage img(scene->width(), scene2->height(), QImage::Format_ARGB32_Premultiplied);
                img.fill(QColor(Qt::white).rgb());
                QPainter p( &img );
                scene->render( &p );
                scene2->render( &p );
                img.save(QString("/Graphic_test/%1.PNG").arg(serial1_1));

Для контроля сделал сохранение поштучно сохраняет а объединение не проходит
« Последнее редактирование: Октябрь 26, 2011, 12:55 от StatuS74 » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Октябрь 26, 2011, 12:55 »

А ты писать-то в /Graphic_test можешь?
И зачем интересно тебе в этом случае альфа-канал?
Записан

Qt 5.11/4.8.7 (X11/Win)
StatuS74
Гость
« Ответ #8 : Октябрь 26, 2011, 12:56 »

писать в эту папку могу. а альфа эм... в книжке пример видел вот решил его использовать
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Октябрь 26, 2011, 13:01 »

Для контроля сделал сохранение поштучно сохраняет а объединение не проходит
Попробуй тогда так:
Код
C++ (Qt)
Painter p;
p.begin( &img );
 scene->render( &p );
p.end();
p.begin( &img );
 scene2->render( &p );
p.end();
Но и это будет работать при условии, что у тебя вторая сцена не имеет элемента, который перекрывает всю сцену.
Записан

Qt 5.11/4.8.7 (X11/Win)
StatuS74
Гость
« Ответ #10 : Октябрь 26, 2011, 13:02 »

у меня 2 сцены примерно одинакового размера
Записан
StatuS74
Гость
« Ответ #11 : Октябрь 26, 2011, 13:21 »

сделал вот так
Код:
 QImage img(scene->width(), scene2->height()*2, QImage::Format_ARGB32_Premultiplied);
                img.fill(QColor(Qt::white).rgb());
                QPainter p( &img );
                p.end();
                scene->render( &p );
                scene2->render( &p );
                img.save(QString("/Graphic_test/%1.PNG").arg(serial1_1));
сохраняет только вторую сцену ... хм...
« Последнее редактирование: Октябрь 26, 2011, 13:27 от StatuS74 » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #12 : Октябрь 26, 2011, 13:49 »

Поменяй порядок сцен или заполняющий цвет.
Скорее всего во 2-й сцене есть элемент, который перекрывает всю сцену.
Записан

Qt 5.11/4.8.7 (X11/Win)
StatuS74
Гость
« Ответ #13 : Октябрь 26, 2011, 13:52 »

поменял местами тперь сохраняется только вторая сцена.
Записан
StatuS74
Гость
« Ответ #14 : Октябрь 26, 2011, 13:55 »

мне кажется что этими действиями сцены как бы не объеденяюсться а заменяются
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 23.