Russian Qt Forum
Ноябрь 23, 2024, 08:27
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Запись всего, что видно на экране, в картинку
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Запись всего, что видно на экране, в картинку (Прочитано 3893 раз)
PulSar.CE3194694
Гость
Запись всего, что видно на экране, в картинку
«
:
Февраль 07, 2013, 14:05 »
Добрый день.
Подскажите, пожалуйста, вот что. В программе есть несколько виджетов, который отображаются на экране. В этих виджетах находятся картинки, которые рисует пейнтер. Как сделать, чтобы то, что я вижу в окне программы, сохранилось как изображение на жесткий диск?
Вот я создал QPixmap, указал его во всех моих виджетах в качестве paintDevice, для каждого виджета вызвал метод update() или repaint() и сохранил через метод save(). Изображение-то сохраняется, но на нем нет части виджетов (точнее всех кроме последнего). Если я правильно понимаю, то каждый раз, когда вызываю update(), то он заново перерисовывает изображение, а не рисует поверх старого. Если это так, то как сделать правильно?
Записан
Bepec
Гость
Re: Запись всего, что видно на экране, в картинку
«
Ответ #1 :
Февраль 07, 2013, 14:14 »
Ты каждый раз его перерисовываешь. Т.е. сначала рисуешь первый. Потом рисуешь второй. Потом рисуешь третий.
Что тебе надо? Скриншоты экрана, или скриншоты всех твоих окон по отдельности в отдельный участой времени?
Записан
PulSar.CE3194694
Гость
Re: Запись всего, что видно на экране, в картинку
«
Ответ #2 :
Февраль 07, 2013, 14:28 »
Надо так:
Рисую первый.
Рисую второй поверх того, что нарисовалось в первом.
Рисую третий поверх того, что нарисовалось во втором и первом.
Рисую четвертый поверх того, что нарисовалось в предыдущих случаях.
...
Сохранить.
Как в фотошопе. Там на слоях все нарисовано. А потом сохраняем в файл и видим всю картинку целиком, а не отдельный слой.
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Запись всего, что видно на экране, в картинку
«
Ответ #3 :
Февраль 07, 2013, 14:39 »
http://doc.qt.digia.com/stable/desktop-screenshot.html
Использовать QPixmap::grabWindow() для захвата картинки определенного окна или виджета на окне
Использовать QPixmap::save() дабы сохранить то что на pixmap
Не это ли вам надо?
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Bepec
Гость
Re: Запись всего, что видно на экране, в картинку
«
Ответ #4 :
Февраль 07, 2013, 14:40 »
Насколько я понимаю, каждый твой новый вызов вызывает изменение размеров полотна под виджет-отрисовку виджета. Тебе же надо складывать изображения.
Тут уже графика пошла, но как то так: создать независимый QImage/QPixmap/QBitmap, получить картинку с первого виджета, скопировать её в QImage//--//--//. Получить картинку со второго и тоже скопировать.
Записан
PulSar.CE3194694
Гость
Re: Запись всего, что видно на экране, в картинку
«
Ответ #5 :
Февраль 07, 2013, 15:43 »
Цитата: gil9red от Февраль 07, 2013, 14:39
http://doc.qt.digia.com/stable/desktop-screenshot.html
Использовать QPixmap::grabWindow() для захвата картинки определенного окна или виджета на окне
Использовать QPixmap::save() дабы сохранить то что на pixmap
Не это ли вам надо?
Не совсем то. Такой способ не подходит для векторных изображений (сохранение в SVG). И там более, при сохранении, я размеры картинки указываю больше чем размеры экрана.
Цитата: Bepec от Февраль 07, 2013, 14:40
Насколько я понимаю, каждый твой новый вызов вызывает изменение размеров полотна под виджет-отрисовку виджета. Тебе же надо складывать изображения.
Тут уже графика пошла, но как то так: создать независимый QImage/QPixmap/QBitmap, получить картинку с первого виджета, скопировать её в QImage//--//--//. Получить картинку со второго и тоже скопировать.
А слияние двух изображений как выполнить (одно наложить поверх другого с заданием координаты вершины)?
«
Последнее редактирование: Февраль 07, 2013, 15:52 от PulSar.CE3194694
»
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...