crossplatform.ru

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

> Выделение области экрана
ernie
  опции профиля:
сообщение 24.11.2010, 19:32
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

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




Репутация:   1  


Доброго времени суток,господа.
Возникла такая задача :
Нужно делать выделение области экрана,т.е. затемняем экран и выделяем нужную нам область прозраным(в стиле выделения photoshop и т.д. , т.е прямоугольная область,по краям маркеры для растягивания её).
Пока появилась только идея делать виджет на весь экран,а в нём делать другой(для выделения),но возможно есть способы лучше это сделать,заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 24.11.2010, 21:17
Сообщение #2


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

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

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




Репутация:   34  


Цитата(ernie @ 24.11.2010, 21:32) *
Пока появилась только идея делать виджет на весь экран,а в нём делать другой(для выделения),но возможно есть


1) вариант попроще: отследить нажатие вниз кнопки мыши и запомнить координату начала. Далее отслеживать движение и рисовать полупрозрачный прямоугольник от начала до курсора. При отпускани кнопки запомнить второй угол рамки и стереть прямоугольник. Минус - нужно перерисовывать графику, по крайней мере под предыдущим положением прямоугольника (его тоже придётся запоминать)
Полупрозрачный прямоугольник можно нарисовать так:

paintEvent()
{
   QPainter P(this);

   //рисуется как обычно графика
   //...

   //прозрачный прямоугольник
   P.setOpacity(.5);
   P.fillRect()
   //   P.setOpacity(1);
}

2) вариант посложнее: делать полупрозрачный виджет, который будет менять размеры как рамка (то есть, сначала это точка, а потом растягивается за курсором в прямоугольник). Плюсы - не нужно думать про перерисовку на виджета снизу при движении.

Сообщение отредактировал Алексей1153 - 24.11.2010, 21:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 29.11.2024, 19:30