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

Implementation

(?R *.DFM}

const

FILMFILE = 'delphi.bmp'; // фильм - BMP-файл N_KADR=12; // кадров в фильме (для данного файла)

98

Часта

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

99

var

Film: TBitMap; // фильм - все кадры

WKadr,HKadr: integer; // ширина и высота кадра

CKadr: integer; // номер текущего кадра

RectKadr: TRect; // положение и размер кадра в фильме

RectScr : Trect; // координаты и размер области // отображения фильма

procedure TForml.FormCreate(Sender: TObject); begin

Film := TBitMap.Create; // создать объект типа TBitMap

Film.LoadFromFile(FILMFILE); //загрузить "фильм" из файла

WKadr := Round{Film.Width/N_Kadr);

HKadr := Film.Height;

RectScr := Bounds(10,10,WKadr,HKadr); Ckadr:=0;

Timerl.Interval := 150; // период обновления кадров – 0.15 сек. Timer1.Enabled:=True; // запустить таймер

end;

// обработка сигнала от таймера

procedure TForml.TimerITimer(Sender: TObject);

begin

// определим положение текущего кадра в фильме

RectKadr:=Bounds(WKadr*CKadr,0,WKadr,HKadr);

// вывод кадра из фильма

Forml.Canvas.CopyRect(RectScr,Film.Canvas,RectKadr);

// подготовимся к выводу следующего кадра CKadr := CKadr+1;

if CKadr =. N_KADR

then CKadr:=0;

end;

end.

38. Напишите программу, в окне которой прокручивается тек подобный титрам в конце фильма. Титры могут быть на иллюстрации, которая должна прокручиваться вместе с текст Рекомендуемый вид формы приведен на рис. 1.38.

Рис. 1.38. Форма программы Прокрутка

Implementation

{$R *.dfm)

const HB = 58; // высота области //вывода

// картинки на форме

HR = 274; // высота плаката

{ В простейшем случае плакат в файле должен быть продублирован по вертикали два раза.

Высота прокручиваемой картинки (битового образа в файле) должна быть больше или равна HB+HR.}

var

pic :TBitMap; // прокручиваемая картинка

sRect,dRect: TRect; // область-источник t: integer;

procedure TForml.FormCreate(Sender: TObject); begin

pic := TBitMap.Create;

// загрузить картинку //положение и размер //области, в которой //прокручивается картинка // отображаемая область

Pic.LoadFromFile('baner.bmp');

dRect := Bounds(10,10,pic.Width,HB),

sRect := Rect (0,0,pic.Width,HB) ;

t:=0;

end;

100

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

101

//сигнал от таймера

procedure TForml.TimerITimer(Sender: TObject);

begin

Canvas.CopyRect(dRect,pic.Canvas,sRect); //отобразить часть

// картинки

inc(t);

if t = HR // длина ролика then t:=0;

sRect := Bounds(0,t,pic.Width,HB) ; // следующий кадр end;

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

procedure TForml .ButtonlClick.(Sender: TObject);

begin

Forml.Close; end;

end.

39. Напишите программу, в окне которой в стиле бегущей стро! ки прокручивается битовый образ (рис. 1.39). Битовый обрИ должен загружаться из ресурса программы (подготовить фаЯ ресурса можно при помощи утилиты Image Editor).

Рис. 1.39. Окно программы Бегущая строка

{ Бегущая строка.

Битовый образ загружается из ресурса. } unit hscroll_;