Название: Запись всего, что видно на экране, в картинку Отправлено: PulSar.CE3194694 от Февраль 07, 2013, 14:05 Добрый день.
Подскажите, пожалуйста, вот что. В программе есть несколько виджетов, который отображаются на экране. В этих виджетах находятся картинки, которые рисует пейнтер. Как сделать, чтобы то, что я вижу в окне программы, сохранилось как изображение на жесткий диск? Вот я создал QPixmap, указал его во всех моих виджетах в качестве paintDevice, для каждого виджета вызвал метод update() или repaint() и сохранил через метод save(). Изображение-то сохраняется, но на нем нет части виджетов (точнее всех кроме последнего). Если я правильно понимаю, то каждый раз, когда вызываю update(), то он заново перерисовывает изображение, а не рисует поверх старого. Если это так, то как сделать правильно? Название: Re: Запись всего, что видно на экране, в картинку Отправлено: Bepec от Февраль 07, 2013, 14:14 Ты каждый раз его перерисовываешь. Т.е. сначала рисуешь первый. Потом рисуешь второй. Потом рисуешь третий.
Что тебе надо? Скриншоты экрана, или скриншоты всех твоих окон по отдельности в отдельный участой времени? Название: Re: Запись всего, что видно на экране, в картинку Отправлено: PulSar.CE3194694 от Февраль 07, 2013, 14:28 Надо так:
Рисую первый. Рисую второй поверх того, что нарисовалось в первом. Рисую третий поверх того, что нарисовалось во втором и первом. Рисую четвертый поверх того, что нарисовалось в предыдущих случаях. ... Сохранить. Как в фотошопе. Там на слоях все нарисовано. А потом сохраняем в файл и видим всю картинку целиком, а не отдельный слой. Название: Re: Запись всего, что видно на экране, в картинку Отправлено: gil9red от Февраль 07, 2013, 14:39 http://doc.qt.digia.com/stable/desktop-screenshot.html
Использовать QPixmap::grabWindow() для захвата картинки определенного окна или виджета на окне Использовать QPixmap::save() дабы сохранить то что на pixmap Не это ли вам надо? :) Название: Re: Запись всего, что видно на экране, в картинку Отправлено: Bepec от Февраль 07, 2013, 14:40 Насколько я понимаю, каждый твой новый вызов вызывает изменение размеров полотна под виджет-отрисовку виджета. Тебе же надо складывать изображения.
Тут уже графика пошла, но как то так: создать независимый QImage/QPixmap/QBitmap, получить картинку с первого виджета, скопировать её в QImage//--//--//. Получить картинку со второго и тоже скопировать. Название: Re: Запись всего, что видно на экране, в картинку Отправлено: PulSar.CE3194694 от Февраль 07, 2013, 15:43 http://doc.qt.digia.com/stable/desktop-screenshot.html Не совсем то. Такой способ не подходит для векторных изображений (сохранение в SVG). И там более, при сохранении, я размеры картинки указываю больше чем размеры экрана.Использовать QPixmap::grabWindow() для захвата картинки определенного окна или виджета на окне Использовать QPixmap::save() дабы сохранить то что на pixmap Не это ли вам надо? :) Насколько я понимаю, каждый твой новый вызов вызывает изменение размеров полотна под виджет-отрисовку виджета. Тебе же надо складывать изображения. Тут уже графика пошла, но как то так: создать независимый QImage/QPixmap/QBitmap, получить картинку с первого виджета, скопировать её в QImage//--//--//. Получить картинку со второго и тоже скопировать. А слияние двух изображений как выполнить (одно наложить поверх другого с заданием координаты вершины)? |