crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Получить изображение рабочего стола
Danmerpro
  опции профиля:
сообщение 28.4.2012, 11:40
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 21.8.2011
Пользователь №: 2823

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день. Нужно реализовать рисование мышкой на рабочем столе. Первая мысль - получать изображение рабочего стола как картинку, а поверх неё уже и рисовать. Тут возникла загвоздка - как получить данные о пикселях, что за пределами виджета?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 28.4.2012, 18:38
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


можно создать QBitmap (или QImage) в памяти - как член класса виджета , туда один раз скопировать фон. Все действия по рисованию вносить туда. А в paintEvent лишь выводить весь объект на морду виджета. Наверное, придётся ещё таймер на 50...100 мс прилепить - для обновления "на всякий случай"

Сообщение отредактировал Алексей1153 - 28.4.2012, 18:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Danmerpro
  опции профиля:
сообщение 30.4.2012, 9:45
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 21.8.2011
Пользователь №: 2823

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 28.4.2012, 19:38) *
можно создать QBitmap (или QImage) в памяти

Я немного не понял, чем это будет быстрее того, что есть сейчас. Ведь на данный момент моя последовательность действий не особо отличается, за исключением того, что я рисую не QBitmap или QImage, а QPixmap. Меня интересует, как бы не начинать рисование с нуля при наступлении очередного paintEvent, а продолжать его на том месте, где закончил в прошлый раз.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Danmerpro
  опции профиля:
сообщение 30.4.2012, 13:14
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 21.8.2011
Пользователь №: 2823

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сделал вот как -
setAttribute(Qt::WA_OpaquePaintEvent);

Таким образом виджет не закрашивает свой фон при очередном наступлении QPaintEvent, и я могу дорисовать только то, что нужно в данный момент.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.12.2024, 18:15