Текущий архив: 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.47 MB
Время: 0.012 c