|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Эффект "волны на воде". Можно как-то применить для формы?
Всем привет. Видел приложение в котором, при клике мышкой по изображению, проявлялся еффект волн. Мне вот интерестно, как можно сделать такой же еффект, но чтоб он применялся не к конкретному изображению, а, например, к форме и находящимся на ней компонентам?
|
#2
|
|||
|
|||
Цитата:
Делаем'c разные игры. Искать на glscene.ru Последний раз редактировалось DungeonLords, 11.06.2009 в 08:30. |
#3
|
||||
|
||||
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
Пишу некоторую программу, которая управляется с помощь touchscreen'а. Вот и захотелось применить вот такой еффектик.
Спасибо за ответы, но можно поподробнее. Я так понял, что мне нужно: 1. Сделать снимок формы со всем содержимым 2. вывести этот снимок и применить к нему еффект. Верно? Вот не понятно, как при этом оставить доступ ко всем контролам на форме? > Страдалецъ, что означает по OnTimer? |
#5
|
||||
|
||||
Компонентик такой полезный есть TTimer позволяет выполнять через заданый интервал времени некие действия. Выполняется паралельно общей нити процесса приложения и немешает ему заниматься своими делами. Вот у него есть событие OnTimer про которое я и говорил.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
Ну это я знаю. Я имею ввиду то, что картинка будет выводится поверх всего и перекроет все остальные компоненты. Или не так?
|
#7
|
||||
|
||||
С чего вдруг? Предполагается, что у вас есть некий битмап скажем на TImage, вы его выводите на форму. Поверх него выводите остальные компоненты. Т.е. картинка оказывается снизу. Далее задействуете на событии OnTimer фильтр к битмапу от TImage. При этом естественно ничего не должно портится.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
Дело в том, что я хочу, чтоб когда, например, нажимаешь на кнопку, волны пошли над ней, тоесть, чтоб еффект применился и к ней тоже.
|
#9
|
||||
|
||||
Можно и так, только это лучше делать не ко всей форме а именно к кликнутому элементу и близлежайшим окрестностям, во избежании артефактов. Здесь почти тоже самое, в момент клика, запомнить область в битмап несколько больше занимаемой контролом, тут надо подобрать оптимальный размер. Далее опять-же по таймеру начинаете последовательно применять фильтр к полученному битмапу и выводить его обратно откуда взяли и так до тех пор пока ваш эффект волн не затухнет. Тут надо подобрать соотношение длительности этого эффекта с комфортным откликом на нажатие, т.к. согласитесь, что если я нажимая на кнопку ожидаю получить результат, а вместо результата получаю полуминутный ролик, то впору пристрелить автора такого сервиса.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
За отклик я с вами полностью согласен. Например я хочу применить данный еффект, на управляющие кнопки плеера. Тоесть при нажатии, область кнопки ничем не перекрывается. Но получится, что пока идет еффект, я не смогу повторно нажать кнопку, а хотелось бы.
|
#11
|
||||
|
||||
Несовсем так, повторно нажать можно, только вам надо завести 2 состояния для кнопки:
Ожидает - ничего не нажато и можно запустить анимацию, Действует - кнопка уже была нажата и анимация запущена. При нажатии на кнопку состояние кнопки переключается с Ожидает на Действует и наоборот. А в событии OnTimer обрабатываете эти состояния. Если состояние кнопки Действует, то выполняется следующий шаг анимации. Если сосотяние Ожидает, значит анимацию надо прервать. Как только последний шаг анимации закончится состояние кнопки выставить в Ожидает. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
Я имел ввиду, что картинка с ефектом будет находится над кнопкой и поетому на ней не получится нажать.
|
#13
|
|||
|
|||
Цитата:
Делаем'c разные игры. Искать на glscene.ru |
#14
|
|||
|
|||
Цитата:
Спасибо, интересное решение. Все конечно усложняет, но ведь "красота требует жертв". |