
- •Часть 1
- •Implementation
- •Implementation
- •Implementation
- •Часть 1
- •Implementation
- •Implementation
- •Implementation
- •IBplementation
- •Implementation
- •Часть 1
- •Implementation
- •Implementation
- •Implementation
- •Implementation
- •Implementation
- •Interface
- •Часть 1
- •Interface
- •Часть 1 I. 104
- •Implementation
- •Implementation
- •Implementation
- •Часть I
- •Р ис. 1.46. Окно программы Звуки Windows
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Implementation
- •Implementation
- •Implementation
- •Implementation
- •Interface
- •Часть 1
- •168 Част
- •Implementation
- •Часть 1
- •Interface uses
- •Implementation
- •Interface
- •Implementation
- •Часть 1
- •Часть 1 I Примеры и задачи
- •Часть 1 I Примеры и задачи
- •Implementation
- •205 Часть
- •Interface
- •Implementation
- •216 Часть 1
- •Поле т ип Размер Информация
- •Часть 1
- •Implementation
- •Interface
- •Implementation
- •Implementation
- •Часть 2 Таблица 2.2 (окончание)
- •252 Часть 2
- •Часть 2 I Delphi — краткий справочник
- •Часть 2
Часть 1 I. 104
примеры и задачи
105
Implementation
{$R *.DFM} uses
jpeg; // чтобы иметь возможность просмотра // /jp ~ иллюстраций
var
aSearchRec : TSearchRec;
aPath: String[128]; // каталог, в котором находятся иллюстрации
aFile: String[128]; // файл иллюстрации
aMask: String[5]; //расширение файла иллюстрации
n: integer = 0;
procedure TForml.FormCreate(Sender: TObject); begin
Imagel.AutoSize := False;
Imagel.Stretch := True; // разрешим масштабирование
// запомним первоначальный размер области вывода иллюстрациЛ iw := Imagel.Width; in := imagel.Height;
Buttonl.Enabled := False; // сделаем недоступной
// кнопку Дальше
FirstPicture; // вывести первую иллюстрацию end;
procedure TForml.EditlKeyPress(Sender: TObject; var Key: Char) begin
if Key = #13 then
i
if DirectoryExists(Editl.Text) then FirstPicture else ShowMessage('Каталог '+ Editl.Text +' указан неверно.')/' end;
// вывести первую иллюстрацию procedure TForml.FirstPicture; var
r : integer; // результат поиска файла begin
aPath := Edit1.Text;
if aPath [Length (aPath) ] <> 'V
then aPath := aPath + 'V; if RadioButtonl.Checked
then aMask := '*.bmp' else aMask := '*.jpg';
r := FindFirst(aPath + aMask, faAnyFile, aSearchRec); if r = 0 then begin
aFile := aPath + aSearchRec.Name;
Imagel.Picture.LoadFromFile(aFile) ; // загрузить
// иллюстрацию
Scalelmage;
r := FindNext(aSearchRec); // найти следующий файл if г = 0 then // еще есть файлы иллюстраций Buttonl.Enabled := True;
end;
end;
// вывести следующую иллюстрацию Procedure TForml.NextPicture(); var
r : integer; begin
aFile := aPath + aSearchRec.Name;
Imagel.Picture.LoadFromFile(aFile);
Scalelmage;
// подготовим вывод след. иллюстрации
г := FindNext(aSearchRec); // найти следующий файл
if r о 0
then // больше нет иллюстраций
Buttonl.Enabled := False; end;
// щелчок на кнопке Дальше
procedure TForml.ButtonlClick(Sender: TObject);
begin
NextPicture; end;
// изменение размера области вывода иллюстрации пропорционально // размеру иллюстрации Procedure Tforml.Scalelmage;
106
Часть j§
Примеры и задачи
107
: integer; // размер иллюстрации scaleY : real; // масштаб по X и Y real; // масштаб
var
pw, ph scaleX, scale : begin
// иллюстрация уже загружена // получим ее размеры pw := Imagel.Picture.Width; ph := Imagel.Picture.Height;
if pw > iw // ширина иллюстрации больше ширины компонент // Image
then scaleX := iw/pw // нужно масштабировать
else scaleX : = 1; if ph > ih // высота иллюстр. больше высоты компонента
then scaleY := ih/ph // нужно масштабировать
else scaleY := 1;
// выберем наименьший коэффициент if scaleX < scaleY
then scale := scaleX
else scale := scaleY;
// изменим размер области вывода иллюстрации Imagel.Height := Round(Imagel.Picture.Height*scale); Imagel.Width := Round(Imagel.Picture.Width*scale); // т. к. Strech = True и размер области пропорционален // размеру картинки, то картинка масштабируется // без искажений end;
// выбор ВМР-формата
procedure TForml.RadioButtonlClick(Sender: TObject);
begin
FirstPicture; end;
// выбор JPG-формата
procedure TForml.RadioButton2Click(Sender: TObject);
begin
FirstPicture; end;
end.
41. Напишите программу, диалоговое окно которой имеет фоновый рисунок, загружаемый из файла (рис. 1.41). Если размер рисунка меньше размера окна, то фоновый рисунок должен быть составлен по принципу кафельной плитки. В качестве фонового использовать один из стандартных рисунков Windows, например, находящийся в файле Колечки.Ьтр или Пузырьки.Ьтр.
Рис. 1.41. Окно с фоновым рисунком
implementation
var
Back : TBitmap; // фоновая картинка
{$R *.dfm}
procedure TForml.FormCreate(Sender: TObject); begin
Back := TBitmap.Create;
// Back.LoadFromResourceName (HInstance, 'PUZ'j ;
Back.LoadFromFile('пузырьки1.bmp'); // загрузить картинку
end;
Procedure TForml.FormPaint(Sender: TObj ect); var
x,y: integer; // левый верхний угол картинки
108
Част
Примеры и задачи
109
begin
х:=0; у:=0;
while у < Forml. Height do begin
while x < Forml.Width do begin forml.Canvas.Draw(x,y,Back); x:=x+Back.Width; end; x:=0;
у:=y+Back.Height; end; end;
end.
Мультимедиа Общие замечания
Приступая к решению задач этого раздела, необходимо вепс нить:
• Работу с анимацией и звуком обеспечивают компонеш
Animate И MediaPlayer.
Компонент Animate позволяет воспроизвести только щ стую, не сопровождаемую звуком анимацию.
Компонент MediaPlayer позволяет воспроизводить анимацию и видео.
42. Напишите программу, в главном окне которой, сразу пос появления окна, воспроизводится не сопровождаемая звуке анимация, например рекламный ролик. Анимация должна вс производиться один раз. На рис. 1.42 приведена форма программ!
procedure TForml.FormCreate(Sender: TObject); begin try
Animatel.FileName := 'Delphi.avi'; Animatel.Play(0,Animatel.FrameCount,1);
except
on Exception do begin Labell.Caption :=
'Ошибка доступа к файлу ' + Animatel.FileName + '. Файл не найден или анимация' 'сопровождается звуком.'
exit;
end; end; end;
// щелчок на кнопке Ok
procedure TForml.BitBtnlClick(Sender: TObject);
begin
Forml.Close; end;
Animatel
Рис. 1.42. Форма программы Анимация
43. Напишите программу, в диалоговом окне которой в результате щелчка на командной кнопке выводится сопровождаемая звуком анимация — содержимое AVI-файла. Рекомендуемый вид формы приведен на рис. 1.43.
Panel!
Рис. 1.43. Компонент Panel 1 используется в качестве экрана для отображения анимации
110
Част
Примеры и задачи
111
( Отображение сопровождаемой звуком анимации при помоши компонента MediaPlayer }
unit UsMP_; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, MPlayer, StdCtrls, ExtCtrls;
type
TForml = class(TForm)
MediaPlayerl: TMediaPlayer; // универсальный проигрыватель Panell: TPanel; // панель, на которую выводится анимация^ ButtonI: TButton; // кнопка Ok
Labell: TLabel;
procedure ButtonlClick(Sender: TObject);
procedure FormCreate(Sender: TObject); private
{ Private declarations } public
/ Public declarations } end;
var
Forml: TForml;