Russian Qt Forum
Ноябрь 05, 2024, 22:13
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
paintEvent() и регион отсечения
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: paintEvent() и регион отсечения (Прочитано 4461 раз)
Alex_cs_gsp
Гость
paintEvent() и регион отсечения
«
:
Октябрь 02, 2010, 19:11 »
При обработки события paintEvent регион отсечения устанавливается автоматически, или нужно каждый раз делать проверки, что рисовать, а что нет?
Записан
SABROG
Гость
Re: paintEvent() и регион отсечения
«
Ответ #1 :
Октябрь 04, 2010, 23:27 »
Как-то была тема с вопросом почему круг большого диаметра нарисованный в paintEvent очень тормозит отрисовку при том, что на виджете показывается малая часть этого круга. В итоге человек сам задал область отсечения и тормоза пропали. Думаю стоит попробовать.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: paintEvent() и регион отсечения
«
Ответ #2 :
Октябрь 05, 2010, 10:12 »
Цитата: Alex_cs_gsp от Октябрь 02, 2010, 19:11
При обработки события paintEvent регион отсечения устанавливается автоматически, или нужно каждый раз делать проверки, что рисовать, а что нет?
Устанавливается автоматически И рекомендуется делать проверки. Т.к. рисование вне региона эффекта не имеет а время может кушать.
Записан
Alex_cs_gsp
Гость
Re: paintEvent() и регион отсечения
«
Ответ #3 :
Октябрь 05, 2010, 21:12 »
То что устанавливается радует, а то я уже начал думать, как это разработчики в винапи смогли от присвоения региона отделаться.
Насчет проверки сомневаюсь. Ведь тогда может получится, что она два раза будет осуществляться - мной и системой.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: paintEvent() и регион отсечения
«
Ответ #4 :
Октябрь 05, 2010, 21:25 »
Цитата: Alex_cs_gsp от Октябрь 05, 2010, 21:12
То что устанавливается радует, а то я уже начал думать, как это разработчики в винапи смогли от присвоения региона отделаться.
Насчет проверки сомневаюсь. Ведь тогда может получится, что она два раза будет осуществляться - мной и системой.
Ну от разработчиков винапи всего можно ожидать
Если есть желание покопаться - давайте сначала обозначим/выясним: а что такое "регион"?
Записан
Alex_cs_gsp
Гость
Re: paintEvent() и регион отсечения
«
Ответ #5 :
Октябрь 05, 2010, 22:36 »
Регион - совокупность точек в координатном пространстве. Эта совокупность может быть пустой, а может занимать все координатное пространство. Так как регион представляет собой множество точек двумерного пространства, то операции над регионами аналогичны операциям над множествами....
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: paintEvent() и регион отсечения
«
Ответ #6 :
Октябрь 06, 2010, 18:04 »
Цитата: Alex_cs_gsp от Октябрь 05, 2010, 22:36
Регион - совокупность точек в координатном пространстве. Эта совокупность может быть пустой, а может занимать все координатное пространство. Так как регион представляет собой множество точек двумерного пространства, то операции над регионами аналогичны операциям над множествами....
Я понимаю аналогично: регион делит все множество точек на 2 подмножества - те что в него входят и нет. Есть ограничения на сложность региона. Все ф-ции рисования имеют эффект только для точек внутри текущего региона.
Для тяжелых рисований имеет смысл проверяться и рисовать только то что внутри, хотя часто это сделать непросто и тогда рисуется "все". Пример: когда-то писал задачу для кардиологии, там надо было рисовать сигналы с диска - с проверкой отсечки скроллинг был намного шустрее. Конечно, ОС сам отсечет - но ведь мне пришлось бы грузить больше данных
Записан
Alex_cs_gsp
Гость
Re: paintEvent() и регион отсечения
«
Ответ #7 :
Октябрь 06, 2010, 22:06 »
В таком случае да, но это чуть не то, ведь это отсечение входных данных. А тут предполагается, что пиксмап уже нарисованный по входным данным и какую-то его часть нужно перенести при поступления события paintEvent на контекст устройства. А сам пиксмап можно обновлять по другим событиям, если например это кардиограмма, то при событии (или сигнале) от прокрутки обновлять пиксмап (тоже не весь конечно), а затем генерить событие paintEvent. Тогда если в какой-то другой момент область виджета станет недействительной, например при перекрытии, то тогда нужно только этот пиксмап через регион отсечения отобразить на контекст, и подгружать данные не нужно. А вот если теперь система сама установила регион отсечения, то дополнительная проверка только усугубит ситуацию.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: paintEvent() и регион отсечения
«
Ответ #8 :
Октябрь 07, 2010, 13:12 »
Любая оптимизация может быть в минус а не в плюс. Но в любом случае OC отсекает. "От противного": если окно перекрыто др (верхним) окном которое никакое рисование затереть не сможет.
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...