Получить изображение рабочего стола |
Здравствуйте, гость ( Вход | Регистрация )
Получить изображение рабочего стола |
Danmerpro |
28.4.2012, 11:40
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день. Нужно реализовать рисование мышкой на рабочем столе. Первая мысль - получать изображение рабочего стола как картинку, а поверх неё уже и рисовать. Тут возникла загвоздка - как получить данные о пикселях, что за пределами виджета?
|
|
|
Алексей1153 |
28.4.2012, 12:15
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
это не кроссплатформенная задача, насколько я понимаю
|
|
|
Danmerpro |
28.4.2012, 12:23
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Гость_Гость_* |
28.4.2012, 14:00
Сообщение
#4
|
Гости |
Посмотри пример Desktop/Screenshot
|
|
|
Danmerpro |
28.4.2012, 14:15
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
Возникла следующая проблема - как развернуть виджет на всю область экрана? Как убрать рамки я нашел. А вот как сделать так, чтобы весь taskbar с меню "пуск" был скрыт рабочей областью виджета?
|
|
|
Danmerpro |
28.4.2012, 15:20
Сообщение
#6
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
С этим тоже разобрался. showFullScreen() что-то сразу не приметил.
На данный момент функция рисования такова:
где desctop - это Pixmap, которая получается с помощью операции
Из-за того, что в функции отрисовки постоянно вызывается
программа тормозит и не получается плавно рисовать. Но если такую функцию не использовать, а заранее попытаться отрисовать, то всё равно вызов paintEvent перерисует все окно и то, что было в desktop не отобразится. Как быть? Возможно ли задать для виджета фиксированный фон, который потом лишь изредка менять? |
|
|
Алексей1153 |
28.4.2012, 18:38
Сообщение
#7
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
можно создать QBitmap (или QImage) в памяти - как член класса виджета , туда один раз скопировать фон. Все действия по рисованию вносить туда. А в paintEvent лишь выводить весь объект на морду виджета. Наверное, придётся ещё таймер на 50...100 мс прилепить - для обновления "на всякий случай"
Сообщение отредактировал Алексей1153 - 28.4.2012, 18:38 |
|
|
Danmerpro |
30.4.2012, 9:45
Сообщение
#8
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
можно создать QBitmap (или QImage) в памяти Я немного не понял, чем это будет быстрее того, что есть сейчас. Ведь на данный момент моя последовательность действий не особо отличается, за исключением того, что я рисую не QBitmap или QImage, а QPixmap. Меня интересует, как бы не начинать рисование с нуля при наступлении очередного paintEvent, а продолжать его на том месте, где закончил в прошлый раз. |
|
|
Danmerpro |
30.4.2012, 13:14
Сообщение
#9
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 21.8.2011 Пользователь №: 2823 Спасибо сказали: 0 раз(а) Репутация: 0 |
Сделал вот как -
Таким образом виджет не закрашивает свой фон при очередном наступлении QPaintEvent, и я могу дорисовать только то, что нужно в данный момент. |
|
|
Текстовая версия | Сейчас: 3.12.2024, 13:09 |