Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Примеры и задачи.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.66 Mб
Скачать

Implementation

{$R *.DFM} .

Во время создания формы надо настроить

компонент MediaPlayerl:

MediaPlayerl.Display = Panell

MediaPlayerl.FileName = delphi_s.avi - имя файла

MediaPlayerl. AutoOpen = True

MediaPlayerl. Visible - False

// щелчок на кнопке OK

procedure TForml.ButtonlClick(Sender: TObject);

begin

MediaPlayerl.Play; // воспроизведете анитации end;

procedure TForml. FormCreate (Sender: TObject);

begin

{ Размер области отображения анимании должен соответствовать размеру Размер анимации в файле delphi_s^vi 60x60 )

// зададим размер области вывода MediaPlayerl.DisplayRect :=Rect (0,0,60, 60) ;

end; end.

44. Напишите программу, используя которую можно просмат­ривать анимацию (содержимое AVI-файла) в р-еальном масштабе времени или по кадрам (рис. 1.44). Для отображения анимации используйте компонент Animate. Обратите внимание, что этот компонент работает только с AVI-файлами, в которых нет звука (для отображения анимации, сопровождаемой звуком, использу­ется компонент MediaPlayer). Для выбора файла анимации ис­пользуйте стандартное диалоговое окно Открытие файла. Реко­мендуемый вид окна программы приведен на рис. 1.45.

{ Просмотр анимации — содержимого AVI-^йлЗ . (с) Культин Н.Б., 2003.

**** ВНИМАНИЕ! ****

Компонент Animate отображает AVl-фашгы, в которых нет звука! При попытке открыть файл, в котором находится сопровождаемая звуком анимация, возникает ошибка. }

unit ShowAVI_; interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls;

112

Часты

Примеры и задачи

113

Рис. 1.44. Окно программы Просмотр анимации

Рис. 1.45. Форма программы Просмотр анимации

type

// компонент Animate // Пуск-Стоп // следующий кадр // предыдущий кадр

TForml = class(TForm) Animatel: TAnimate; Buttonl: TButton; Button2: TButton; Button3: TButton; // режим просмотра

RadioButtonl: TRadioButton; // просмотр всей анимации RadioButton2: TRadioButton; // покадровый

OpenDialogl: TOpenDialog; // диалоговое окно Открытие файла Button4: TButton; // активизация окна Открытие файла

GroupBoxl: TGroupBox; Label1: TLabel; Editl: TEdit;

procedure ButtonlClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure RadioButtonlClick(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure EditlKeyPress(Sender: TObject; var Key: Char);

procedure Button4Click(Sender: TObject);

// это объявление вставлено сюда вручную procedure OpenAVI;

private

I Private declarations } public

/ Public declarations } end;

var

Forml: TForml; // форма

CFrame: integer; // номер кадра, отображаемого

// в режиме покадрового просмотра

Implementation

{$R *.DFM}

// нажатие клавиши в поле Файл

procedure TForml.EditlKeyPress(Sender: TObject; var Key: Char);

114

b egin

Час

ПР

меры и задачи

115

end;

if (Key = #13) and (Length(Editl.Text) о 0) then OpenAVI;

begin

Buttonl.Enabled:=True; // доступна кнопка Пуск

// сделать недоступными кнопки покадрового просмотра

Forml.Button3.Enabled:=False;

Forml.Button2.Enabled:=False;

// Щелчок на кнопке Выбрать

// открывает стандартное диалоговое

// окно Открытие файла

procedure TForml.Button4Click(Sender: TObject);

begin

OpenDialogl.Title := 'Выбрать AVI-файл1;

if OpenDialogl.Execute then

begin

Editl.Text :■ OpenDialogl.FileName; OpenAVI; end; end;

// пуск и остановка просмотра анимации procedure TForml.ButtonlClick(Sender: TObject); begin

if Animatel.Active = False // в данный момент анимация

// не выводится then begin

Animatel.StartFrame:=l; // вывод с первого кадра Animatel.StopFrame:=Animatel.FrameCount; // по последний

// кадр Animatel.Active:=True,■

Buttonl.caption:='Стоп';

RadioButton2.Enabled:=False; end '

else // анимация отображается begin

Animatel.Active:=False; // остановить отображение

Buttonl.caption:='Пуск1;

RadioButton2.Enabled:=True; end; end;

// активизация режима просмотра всей анимации procedure TForml.RadioButtonlClick(Sender: TObject);

end;

// активизация режима покадрового просмотра procedure TForml.RadioButton2Click(Sender: TObject);

begin

Button2.Enabled:=True; // кнопка Следующей кадр доступна Button3.Enabled:=False; // кнопка Предыдущий кадр недоступна

// сделать недоступной кнопку Пуск — вывод всей анимации Buttonl.Enabled:=False; Animatel.StartFrame:=1;

CFrame:=1; end;

// переход к следующему кадру

procedure TForml.Button2Click(Sender: TObject);

begin

if CFrame < Animatel.FrameCount then begin

CFrame := CFrame + 1;

// вывести кадр

Animatel.StartFrame := CFrame;

Animatel.StopFrame := CFrame;

Animatel.Active := True;

if CFrame = Animatel.FrameCount // текущий кадр

// последний

then Button2.Enabled:=False;

end; if CFrame > 1 then Button3.Enabled := True;

end;

// переход к предыдущему кадру

procedure TForml.Button3Click(Sender: TObject)

begin

if CFrame > 1 then

116