- •Часть 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
Implementation
(?R *.DFM}
const
FILMFILE = 'delphi.bmp'; // фильм - BMP-файл N_KADR=12; // кадров в фильме (для данного файла)
98
Часта
Примеры и задачи
99
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;
//
загрузить
картинку //положение
и размер //области, в которой
//прокручивается картинка //
отображаемая область
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_;
