|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.06.2012, 18:30 | #1 |
Регистрация: 26.06.2012
Сообщений: 8
|
Эффект плавного увеличения Элементов как Highslide
Добрый День.
Прошу подсказать как в Делфи реализовать ставшие уже привычными в Web страницах эффекты всплывания элементов с затенением окна. К примеру - это галереи, формы логина, задание вопросов. Самый яркий пример это Highslide. Прошу меня понять правильно. Задача не по деревянному открыть диалоговое окно, а сфокусировать пользователя на некотором контроле или группе контролов, и с легкостью отпустить его взгляд, когда он тыкнет мышкой вне активной области(на затемненую) чтобы вернуться в главную форму. Куча диалоговых окон это прошлый век товарищи программисты. На современных мобильных патформах их нету, а я немогу найти такую фозможность для Delphi. Я пользусь XE2. ПРоект уже сделан с помощью VCL. Fire Monkey которые однажды посоветовали не есть решение, поскольку это платформа, и сырая. http://highslide.com/ - вот желанные примеры того, во что хотелось бы превращать приложения на делфи. Заранее спасибо. |
26.06.2012, 18:46 | #2 |
Форумчанин
Регистрация: 06.02.2011
Сообщений: 149
|
Понимание того, что мобильные платформы отличаются от настольных - отсутствует?
По теме - ну, если уж так хочется затенения, то (первое, что приходит в голову) сделай пустую форму, поставь ей Color := clBlack, AlphaBlend := 128, размер и положение - как у формы, с которой производится вызов диалогового окна. При вызове диалога сначала показываешь эту форму, а затем - диалог.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
|
27.06.2012, 11:30 | #3 |
Регистрация: 26.06.2012
Сообщений: 8
|
ych_del благодарю за совет. Спорить насчтет дифференцированности платформы не стану. Хотя сначала даже написал расширенный ответ, но из-за проблем с нетом он потерялся.
Скажу только что в пример я привел WEB приложение. Категория программирования, где дизайнерам дано больше свободы и волеизъявления нежели дизайнерам на десктопах. (Как совет прочтите Алана Купера "Психбольница в руках пациентов"). Отсюда вывод, что все сделанное на десктопах сделано как могли, а не как надо. Поэтому вопрос относительно готовых контролов для приблжения функциональности десктопа к Вебу или мобилке остается открытым. |
27.06.2012, 20:58 | #4 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 305
|
Можно скопировать изображение формы, наложить черный полупрозрачный квадрат, и нарисовать например на TPanel.
Скрин В примере, при нажатии на изображение, оно "выезжает" на передний план. Вместо изображения может быть что угодно. PS В коде есть утечка памяти. Последний раз редактировалось kangreon; 27.06.2012 в 21:09. |
27.06.2012, 22:04 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
на мой взгляд тяжелый(компонент как окно(объект ОС)) интерфейс не подходит для этого(почти все видимые такие).
с легким интерфейсом(примеры таких компонентов это TLabel, TImage, они не имеют окна) это было бы просто и без костылей.. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
28.06.2012, 10:41 | #6 |
Регистрация: 26.06.2012
Сообщений: 8
|
Окно не является тяжелым ни в коем случае само по себе. Поскольку окно это только метафора отрисованой облсти в Графическом адаптере.
Однако же рисовать окно действительно не лучший вариант. Я избрал путь трех Окон. Модуль правда еще не готов. Но принципописать могу. Основное Окно(Owner) - Полупрозрачное окно - Окно содержашее необходимые контролы - сами обозрваемые контролы(Image, Any Frame и так далее). Вот такой вот трехслойный пирог. Основная пробелма которая у меня возникла это таскать их все вместе. Поскольку хочется получить модуль который не меняет основные обработчики событий главного окна, и действует предельно деликатно со всеми данными которые были до него в програме. Пример выложу вечером. |
28.06.2012, 16:01 | #7 |
Регистрация: 26.06.2012
Сообщений: 8
|
Так ну есть маленький примерчик.
Что хочу заметить. Часто подобные примеры сопровождаются бурными осужденями, чо при растягивании формы вылезают костыли промаргивания и т.д. Хочу заметить, что если один пользователь на 30 начнет это делать, то это вреоятнее программист интересующийся - как же это сделал ктото другой. пользователю абсолютно до фени. Также я пока не заморачивался на эффекте плавного появления. Поскольку это лишь немного элементная база. И она должны быть доведена до совершенства. Чтобы не тормозить работу пользователя(ну как это было в первых айпадах). Однако у меня всеже есть вопросы по Этому идиотскому Винапи. Которое делает "все за нас", и на кторое у меня пока нету времени - 1. как сделать форму MosTop но только для приложения? Или как жестко контролировать ZOrder в приложении? Последний раз редактировалось eagleoriginal; 28.06.2012 в 16:35. |
28.06.2012, 17:15 | #8 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
не путайте окно с формой.(к примеру если в вашем примере открыта только начальная форма, то я вижу 6 окон(форма+пять кнопок)) тяжелые компоненты, это компоненты которые создают окно под себя. легкие, которые рисуются на поверхности родителя. вы сами видите что пришлось городить ради этого. а теперь к делу. SetWindowPos посмотрите. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
28.06.2012, 17:25 | #9 |
Регистрация: 26.06.2012
Сообщений: 8
|
SetWindowPos - что с ним. Проблема в том, что за меня система меняет взаимное расположение окон.
Насчет тяжелых и простых. ОКОН. То что каждая кракозябра это окно я в курсе. Каждая является слоем при отрисовке. Для видяшки, то это пылинка. Сами понимаете примитивное смешивание двух текстур. В софтверном варианте ничего не рисуется уже давно. Поэтому сделав несколько слоев я не сильно усложнил работу системы. Имея метафору я подазумевал, что на самом нижнем уровне лежит выделенный буфер в видяшке. И который будет потом наложен на Десктоп по правлам смешивания. |
28.06.2012, 17:31 | #10 |
Регистрация: 26.06.2012
Сообщений: 8
|
И кстати Пепел Феникса это серьезная проблема. Я применил модуль в приложении с фреймами. И они стали уходит назад за фремы при перемещении или растягивании Главного Окна.
Как не давать окну уходить окну назад и вообще менять свой ZOrder относительно своего Owner окна? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Эффект увеличения изображения | dacorp | JavaScript, Ajax | 2 | 30.06.2011 15:00 |
статья - Эффект плавного затемнения | Pblog | Обсуждение статей | 3 | 28.04.2011 15:50 |
Как мне в визуальном программировании написать программу увеличения масштаба и уменьшения до исчезновения | Надежда.. | Мультимедиа в Delphi | 3 | 29.12.2008 19:28 |