Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

Художественные думы   Найти похожие ветки 

 
Nous Mellon ©   (2004-02-18 17:03) [0]

Обрисую в общих чертах задачу:
В моей программе (разрабатываемой естественно в Делфи) есть несколько панелей с элементами управления.
Каждая из панелей занимает весь экран при ее развертывании. Заказчик попросил организовать какую-нибудь эффектную анимацию
при смене одной панели другой. На главной панели расположены четыре рисунка кнопки. По щелчку на каждом из рисунков
главная панель доглжна исчезнуть, а на ее место развернуться какая-либо из четырех оставшихся панелей.
На всю площадь каждой из панелей натянут фоновый рисунок. Причем для каждой этот рисунок свой.
Разрешение приблизительно 800*600. Следует отметить что четыре кнопки-рисунка изображают каждая
уменьшенный вариант фона панели на которую осуществляется переход по щелчку.
Какие мысли по поводу эффектной анимации у меня возникли:
1) Сделать разворачивание фона и панели. То есть щелкаем по маленькому рисунку(только тогда ее надо обрамит панелью):
он разворачиваетсявместе с панелью) на все окно и появляются элементы управления. Чтобы рисунок был маленьким и мог развернуться я
установил флаг proportional у TImage.
2) "Кинематографическая" смена панелей. То есть щелкаем по рисунку - одна панель уезжает вправо
а другая за ней же едет слева и встает на ее место.
Все эти решения я реализовал, но одно плохо не удалось достичь удовлетворительной скорости :((
Я установил таймер включаемый по щелчку в результате каждой итерации которого панель сдвигались(или рисунок разворачивался)
на одну единицу координат. При установке TTimer.Interval ниже 100 скорость уже не увеличивается, а иногда просто катастрофически падает.
В принципе можно за одну итрацию таймера увеличить координату скажем на 2, но тогда заметно "мигание",
даже при включенном doublebuffered. В общем я не знаю с чем связаны эти скоростные казусы (предполагаю
что с выскоим разрешением фона), но буду рад любым конструктивным предложениям по устранению этих проблем или
связанных с другими способами создания "эффектной" анимации.


 
Nous Mellon ©   (2004-02-18 17:04) [1]


> Каждая из панелей занимает весь экран при ее развертывании

Поправлюсь: все окно


 
Альф ©   (2004-02-18 17:14) [2]

DelphiX

Даже для игрушек размер текстуры 800х600 это многовато.


 
Nikolay M. ©   (2004-02-18 17:17) [3]

Попиксельно одна форма проступает поверх другой. Любимый спецэффект еще со времен DOS-а и разрешений 320х240х16 :)


 
Nous Mellon ©   (2004-02-18 17:22) [4]


> Даже для игрушек размер текстуры 800х600 это многовато.

Дело в том что это совсем не игрушка. И не хочется из одного этого дела привлекать эту стороннюю библиотеку.
> Попиксельно одна форма проступает поверх другой

В данном случае панели. Но как реализовать не знаю :((


 
Nous Mellon ©   (2004-02-18 19:10) [5]

Я тут наешл отличную замену AnimateWindow API
Только вопросы: Во всех ли ОС работает и можно ли скажем функции
AnimateWindow передать хэндл не формы а панели. У меня к сожалению не получилось :((


 
nikkie ©   (2004-02-18 19:13) [6]

>Во всех ли ОС работает
Requirements
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Requires Windows 98.


 
Nous Mellon ©   (2004-02-18 19:18) [7]


> >Во всех ли ОС работает

Спасибо, только сейчас наткнулся на это в МСДН.
Не подскажете насчет совместимости с панелями. Был бы очень благодарен.


 
Nous Mellon ©   (2004-02-18 20:27) [8]

У Кэнту приведен код
Form1.Hide;
AnimateWindow(Form1.Handle,2000,AW_BLEND);
Form1.Show;
Он отлично работает с формой но с панелями никак :(( Хотя ниже написано что применимо к оконным элементам управления. Есть ли какие предложения, господа?


 
nikkie ©   (2004-02-18 20:47) [9]

>Есть ли какие предложения, господа?
документацию читать прежде всего.

AW_BLEND
Uses a fade effect. This flag can be used only if hwnd is a top-level window.


 
Nous Mellon ©   (2004-02-18 21:06) [10]


> Uses a fade effect. This flag can be used only if hwnd is
> a top-level window.

Спасибо. Жаль.

Что скажете насчет упомянутых мною в первом посте анимаций. Возможна ли их
более менее быстрая реализация без исп. сторонних компонентов. Куда копать хотя бы?



Страницы: 1 вся ветка

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-43494
BKGG
2004-02-29 09:57
2004.03.14
рисунок (*.bmp) в Dll


1-43602
Dina
2004-01-23 13:18
2004.03.14
Рисую параболу с помощью TChart


8-43693
Nikolas
2003-11-15 08:58
2004.03.14
MediaPlayer


6-43743
Scordion
2004-01-03 19:17
2004.03.14
Посоветуйте компонент для скачивания файлов!


1-43554
TUser
2004-02-27 15:17
2004.03.14
FindWordPad