Главная страница
    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.47 MB
Время: 0.012 c
1-43648
Marina_S
2004-03-03 23:43
2004.03.14
Как засечь время?


14-43836
Bublik
2004-02-20 19:10
2004.03.14
Помогите горю


14-43802
}|{yk
2004-02-23 10:31
2004.03.14
Ура! FireBird 1.5 stable вышел!


14-43773
raptorus
2004-01-23 13:57
2004.03.14
Уважаемые, Мастера, подскажите как создать файл помощи .hlp?


1-43515
Charly22
2004-02-28 17:38
2004.03.14
Использование словарей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский