Анимированное изображение – компонент TAnimate
Рассмотрение графических компонентов окажется неполным, если мы не уделим внимание компоненту, способному демонстрировать полноценную анимацию. В Windows основным анимационным форматом считается аудио-видеоклип (Audio Video Interleaved, AVI). Файл в формате AVI представляет собой серию обычных растровых картинок-кадров, отображаемых поочередно. Специально для демонстрации клипов AVI разработан класс TAnimate. В отличие от рассмотренных в этой главе классов, он не имеет ничего общего с TGraphicControl и берет начало от TWinControl.
Выбор клипа осуществляется несколькими способами. Первый и самый простой – использовать ресурсы динамически подключаемой библиотеки Shell32.dll. Этот файл входит в состав Windows и содержит 8 клипов. Для подключения клипа свойству CommonAVI необходимо присвоить значение, отличное от aviNone:
propertyCommonAVI: TCommonAVI;
typeTCommonAVI = (aviNone, aviFindFolder, aviFindFile, aviFindComputer,
aviCopyFiles, aviCopyFile, aviRecycleFile, aviEmptyRecycle, aviDeleteFile);
Второй способ заключается в выборе отдельного файла с расширением .avi при помощи свойства:
propertyFileName: TFileName;
Третий способ подключения клипа связан с использованием отдельного модуля-ресурса, содержащего анимационную картинку. Для этого в процессе выполнения приложения передайте в дескриптор ResHandle указатель на ресурс:
propertyResHandle: THandle;
typeTHandle = Integer;
После чего воспользуйтесь одним из свойств:
propertyResID: Integer;
propertyResName: string;
В ResID указывается уникальный идентификатор анимации. Если же анимационная картинка имеет собственное имя, то присвойте имя свойству ResName. Справочную информацию о текущем клипе (такую как размеры кадра по вертикали и горизонтали и общее количество кадров) соответственно предоставляют свойства:
propertyFrameHeight: Integer;
propertyFrameWidth: Integer;
propertyFrameCount: Integer;
За автоматическую установку размеров элемента управления отвечает свойство:
propertyAutoSize: Boolean;
Готовность клипа к воспроизведению можно проверить по состоянию свойства:
propertyOpen: Boolean;
В случае готовности к проигрыванию свойство принимает значение true и элемент управления TAnimate приступает к отображению первого кадра клипа. Перевод свойства в false выгружает клип из памяти. Для запуска анимации достаточно присвоить значение true свойству:
propertyActive: Boolean;
При желании ограничить диапазон отображаемых кадров установите стартовый и конечный кадры (конечно, в пределах FrameCount):
propertyStartFrame: SmallInt;
propertyStopFrame: SmallInt;
Количество повторов клипа устанавливается свойством Repetitions. Для организации бесконечного проигрывания в цикле присвойте свойству значение 0.
propertyRepetitions: Integer;
Для синхронизации показа клипа с внутренним таймером Windows воспользуйтесь свойством:
propertyTimers: Boolean;
Если клип не содержит звука, то рекомендую оставлять свойство Timers с установками по умолчанию (false), т. к. в этом случае для клипа создается отдельный поток, практически не влияющий на производительность системы. Методы класса TAnimate представлены в табл. 10.5.
Таблица 10.5. Методы класса TAnimate
Метод | Описание |
functionCanAutoSize(varNewWidth, NewHeight: Integer): Boolean; | Отвечает за установку размеров элемента управления в соответствии с размерами кадров клипа. Вызывается автоматически при установке свойстваAutoSize в true. |
procedurePlay(FromFrame, ToFrame: Word; Count: Integer); | Проигрывает клип Count раз, начиная с кадра FromFrame до ToFrame. |
procedureStop; | Останавливает проигрывание клипа по аналогии с установкой в false свойства Active. |
procedureReset; | Очищает значения, заданные в свойствах StartFrame и StopFrame, и позиционирует клип на первом кадре. Последовательно генерирует события OnClose() и OnOpen(). |
procedureSeek(Frame: SmallInt); | Отображает кадр с порядковым номером Frame. |
События, генерируемые элементом управления TAnimate, представлены в табл. 10.6.
Таблица 10.6. События класса TAnimate
Событие | Описание |
propertyOnOpen: TNotifyEvent;; | Возникает сразу после открытия клипа (Open:= true). |
propertyOnStart: TNotifyEvent; | Возникает в момент воспроизведения клипа (Active:= true или вызов метода Play). |
propertyOnStop: TNotifyEvent; | Возникает после прекращения воспроизведения клипа. |
propertyOnClose: TNotifyEvent; | Возникает при закрытии клипа (Open:= false). |
Дата добавления: 2016-03-15; просмотров: 839;