Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Эффект затемнения окон


Автор: artsb 15.9.2010, 16:30
Всем привет!

Делаю так, что при открытии дочернего окна из главного, новое окно встраивается в PageControl (через Dock). При открытии дочерних окон внутри него, окна также встраиваются в текущую страницу поверх уже существующих. Т.е. :
(далее идут скрины одной из страниц PageControl)
Form2:
user posted image
Form3 (поверх Form2):
user posted image
Form4 (поверх Form3):
user posted image

Но, это как-то скучновато smile
Решил сделать так:
Form2:
user posted image
Form3 (поверх Form2):
user posted image
Form4 (поверх Form3):
user posted image
Так уже лучше smile
Сделал так: при создании нового окна, делается скрин текущего, затем затемняется и вставляется в Image, который находится на новой форме.
Но возникли проблемы. При ресайзинге, нужно пробежаться по всему дереву окон (с самого низа) и повторить операцию. В этом случае, происходит сильное мигание. DoubleBuffered помог. Но теперь при ресайзинге появились тормоза.

Собственно, вопрос в том, как всё это дело можно оптимизировать. Или может есть другой подход?..
Спасибо.

Автор: artsb 16.9.2010, 14:27
Решил проблему следующим образом:
при ресайзинге, скрываю Image и не произвожу никаких расчётов, т.е. фон просто остаётся тёмно серым (таким я его сделал заранее). После окончания ресайзинга, через несколько сотен миллисекунд, произвожу все нужные расчёты и делаю видимым Image. Благодаря этому, нет никаких глюков и тормозов. А главное смотрится отлично.
Я ещё сделал чтобы при отображении Image'а после ресайзинга, изображение появлялось плавно. Эффект классно работает. Но только если размеры окна небольшие. Если же окно максимально растянуть, то появляются мини тормоза при отрисовке. Они не сильно заметны, но я всё равно решил отказаться от этого эффекта.

Автор: Sonic7272 17.9.2010, 05:26
Попробуй использовать свойства формы AlphaBlend и AlphaBlendValue. Тоже оригинально.  

Автор: artsb 17.9.2010, 11:13
Sonic7272, спасибо. Подумаю над этим.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)