crossplatform.ru

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

11 страниц V  « < 5 6 7 8 9 > »   
Ответить в данную темуНачать новую тему
> QPaintEvent, installEventFilter, QPainter, Overpainting
SABROG
  опции профиля:
сообщение 27.5.2009, 22:05
Сообщение #61


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

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Меня не столько исходники интересуют, сколько скриншот с результатом :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.5.2009, 1:17
Сообщение #62


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(SABROG @ 27.5.2009, 23:05) *
Меня не столько исходники интересуют, сколько скриншот с результатом
??? Какой от него толк, от скриншота?

Исходники прилагаю, скриншот есть. Картинку сам поменяешь, если что. У меня их просто нет.

Прикрепленные файлы
Прикрепленный файл  Overpainting.zip ( 7.54 килобайт ) Кол-во скачиваний: 170
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.5.2009, 4:18
Сообщение #63


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Вот для эфекта затемнения я бы просто палитру окошка менял перед паказом диалога. И альфа канал бы не использовал, за ненадобностью. Т.к. само окошко все равно не прозрачное.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 28.5.2009, 8:23
Сообщение #64


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

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Цитата(Litkevich Yuriy @ 28.5.2009, 5:18) *
Вот для эфекта затемнения я бы просто палитру окошка менял перед паказом диалога. И альфа канал бы не использовал, за ненадобностью. Т.к. само окошко все равно не прозрачное.


Я думал над этим, но это не решение, а обход реальной задачи.

igor_bogomolov, думаю я теперь созрел, чтобы принять этот вариант как окончательный на данный момент. Можно начать писать статью в wiki. Осталось лишь подумать еще над возможностью добавить прозрачную анимацию.

Сообщение отредактировал SABROG - 28.5.2009, 8:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.5.2009, 8:40
Сообщение #65


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(SABROG @ 28.5.2009, 9:23) *
Осталось лишь подумать еще над возможностью добавить прозрачную анимацию.
Я вчера ночью, перед тем как выложить пример, немного поэксперементировал. Как раз таки хотел сделать сюрприз и выложить демку с эфектом падающего снега. Сделал 5 прозрачных пнг-шег с хаотично расположенными снижинками. По таймеру - перерисовывал эти картинки, вызывая update() для окна. Оказалось, что таким образом перерисовываются только те виджеты у которых свойство setAutoFillBackground(false). Виджеты с установленным свойством в true, почему то перерисовку игнорируют.
Так что у меня вопрос - чем отличаются события перерисовки через update() и от тех событий которые происходят при ресайзе?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.5.2009, 8:58
Сообщение #66


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(igor_bogomolov @ 28.5.2009, 12:40) *
чем отличаются события перерисовки через update() и от тех событий которые происходят при ресайзе?
на память: update() - групирует события поэтому его рекомендуют использовать для повышения производительности. Т.е. пачка из нескольких событий рисования будет превращена в одно.

Цитата
void QWidget::update () [slot]
...
This function does not cause an immediate repaint; instead it schedules a paint event for processing when Qt returns to the main event loop. This permits Qt to optimize for more speed and less flicker than a call to repaint() does.

Calling update() several times normally results in just one paintEvent() call.
тык
Цитата
void QWidget::repaint () [slot]

Repaints the widget directly by calling paintEvent() immediately, unless updates are disabled or the widget is hidden.

We suggest only using repaint() if you need an immediate repaint, for example during animation. In almost all circumstances update() is better, as it permits Qt to optimize for speed and minimize flicker.

Warning: If you call repaint() in a function which may itself be called from paintEvent(), you may get infinite recursion. The update() function never causes recursion.
тык

на память немного промазал, групируются не события, а вызовы update()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.5.2009, 11:02
Сообщение #67


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Все поправил. Теперь и анимация работает нормально.
Прилагаю изменёный проектик. В нем по таймеру перерисовываются звездочки. Получается как анимация. При нажатии на кнопку рисуется затемненный прозрачный фон.

SABROG
, у меня на работе нет возможности сделать гифку, если нетрудно, скомпилируй проектик, засними, и размести здесь. Что бы вроде как итог подвести. Ну и теперь на самом деле можешь писать статью :rolleyes:

Сообщение отредактировал igor_bogomolov - 28.5.2009, 11:04
Прикрепленные файлы
Прикрепленный файл  temporary.zip ( 31.93 килобайт ) Кол-во скачиваний: 593
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 28.5.2009, 11:20
Сообщение #68


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

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  




Написал в wiki как смог, если есть желающие добавить или поправить - милости прошу.

Сообщение отредактировал SABROG - 28.5.2009, 12:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 28.5.2009, 12:52
Сообщение #69


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

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


wasyota мне дал любопытную ссылочку http://www.qtcentre.org/forum/f-qt-program...lter-12287.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.5.2009, 13:04
Сообщение #70


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

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(SABROG @ 28.5.2009, 13:52) *
wasyota мне дал любопытную ссылочку http://www.qtcentre.org/forum/f-qt-program...lter-12287.html
Я еще с утра это посмотрел. Что толку. В Qt PostEventFilter пока нет. Но реализацию было бы все равно интересно посмотреть. Приатач сюда posteventfilter.h, а то неохото региться там только из-за этого
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

11 страниц V  « < 5 6 7 8 9 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 29.3.2024, 0:52