- •0Министерство образования тверской области
- •Практическое занятие 1
- •Теоретический материал
- •Порядок выполнения работы
- •Задания
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 2
- •Теоретический материал
- •Порядок выполнения работы
- •Задания
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 3
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 4
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 5
- •Теоретический материал
- •Порядок выполнения работы
- •Варианты прикладных задач:
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 6
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 7
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 8
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 9
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 10
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 11
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 12
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 13
- •Теоретический материал
- •1.1. Эквивалентное разбиение
- •Порядок выполнения работы
- •Варианты заданий:
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 14
- •Теоретический материал
- •Общие характеристики качества программного средства
- •Длина программы
- •4. Объем программы
- •Потенциальный объем V*
- •Порядок выполнения работы
- •Практическое занятие 15
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 16
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 17
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 18
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 22
- •Теоретический материал
- •Теоретический материал
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Одномерные массивы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 23
- •Теоретический материал
- •Двумерные массивы (матрицы)
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 24
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 25
- •Теоретический материал
- •Карандаш и кисть
- •Вывод текста
- •Методы вычерчивания графических примитивов
- •Ломаная линия
- •Окружность и эллипс
- •Прямоугольник
- •Многоугольник
- •Вывод иллюстраций
- •Битовые образы
- •Мультипликация
- •Метод базовой точки
- •Использование битовых образов
- •Загрузка битового образа из ресурса программы
- •Создание файла ресурсов
- •Подключение файла ресурсов
- •Просмотр "мультика"
- •Порядок выполнения
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 26
- •Теоретический материал порядок выполнения
- •Контрольные вопросы
- •Список использованной литературы
Просмотр "мультика"
Теперь рассмотрим, как можно реализовать вывод в диалоговом окне программы простого "мультика", подобного тому, который можно видеть в диалоговом окне Установка связи при подключении к Internet . Эффект бегущего между телефоном и компьютером красного квадратика достигается за счет того, что в диалоговое окно выводятся сменяющие друг друга картинки. Кадры мультика обычно находятся в одном файле или в одном ресурсе. Перед началом работы программы они загружаются в буфер, в качестве которого удобно использовать объект типа TBitMap. Задача процедуры, реализующей вывод мультика, состоит в том, чтобы выделить очередной кадр и вывести его в нужное место формы. Вывести кадр на поверхность формы можно применением метода copyRect к свойству canvas этой формы. Метод CopyRect копирует прямоугольную область одной графической поверхности на другую. Инструкция применения метода CopyRect в общем виде выглядит так:
Canvas1.CopyRect(Область1, Canvas2, 06ласть2)
где:
canvas1 — графическая поверхность, на которую выполняется копирование;
Canvas2 — графическая поверхность, с которой выполняется копирование;
параметр Область2 —- задает положение и размер копируемой прямоугольной области, а параметр областьi — положение копии на поверхности Canvas1.
В качестве параметров область! и область2 используются структуры типа TRect, поля которых определяют положение и размер области. Заполнить поля структуры TRect можно при помощи функции Bounds, инструкция обращения к которой в общем виде выглядит так:
Bounds(x,у,Width,Height)
где:
х и у — координаты левого верхнего угла области;
width и Height — ширина и высота области.
Следующая программа, текст которой приведен в листинге 12, выводит в диалоговое окно простой мультик — дельфийскую колонну, вокруг которой "летает" некоторый объект. На рис. приведены кадры этого мультика (содержимое файла film.bmp). Диалоговое окно программы приведено на рис., оно содержит один единственный компонент — таймер.
листинг 12. Мультик (использование метода CopRect)
unit multik ;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1l: TForm1;
implementation
($R *.DFM}
const
FILMFILE = 'film2.bmp'; // фильм — bmp-файл
N_KADR=12; // кадров в фильме (для данного файла)
var
Film: TBitMap; // фильм — все кадры
WKadr,HKadr: integer; // ширина и высота кадра
CKadr: integer; // номер текущего кадра
RectKadr: TRect; // положение и размер кадра в фильме
Rect1 : Trect; // координаты и размер области отображения фильма
procedure TForm1.FormActivate(Sender: TObject);
begin
Film := TBitMap.Create;
Film.LoadFromFile(FILMFILE);
WKadr := Round(Film.Width/N_Kadr);
HKadr := Film.Height;
Rect1 := Bounds(10,10,WKadr,HKadr);
Ckadr:=0;
Form1.Timerl.Interval := 150; // период обновления кадров — 0.15 с
Form1.Timerl.Enabled:=True; // запустить таймер
end;
// отрисовка кадра procedure DrawKadr;
begin
// определим положение текущего кадра в фильме
RectKadr:=Bounds(WKadr*CKadr,0,WKadr,HKadr);
// вывод кадра из фильма
Form1.Canvas.CopyRect(Rect1,Film*.Canvas,RectKadr);
// подготовимся к выводу следующего кадра
CKadr := CKadr+1;
if CKadr = N_KADR then CKadr:=0;:
end;
// обработка сигнала от таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin
DrawKadr;
end;
end.
Программа состоит из трех процедур. Процедура TForm1. FormActivate создает объект Film и загружает в него фильм — BMP-файл, в котором находятся кадры фильма. Затем, используя информацию о размере загруженного битового образа, процедура устанавливает значения характеристик кадра: высоту и ширину.
После этого создается объект Kadr (типа TBitMap), предназначенный для хранения текущего кадра. Следует обратить внимание, что после создания объекта Kadr принудительно устанавливаются значения свойств width и Height. Если этого не сделать, то созданный объект будет существовать, однако память для хранения битового образа не будет выделена. В конце своей работы процедура TForml. FormActivate устанавливает номер текущего кадра и запускает таймер.
Основную работу в программе выполняет процедура DrawKadr, которая выделяет из фильма очередной кадр и выводит его в форму. Выделение кадра и его отрисовку путем копирования фрагмента картинки с одной поверхности на другую выполняет метод copyRect (рис. 10.21), которому в качестве параметров передаются координаты области, куда нужно копировать, поверхность и положение области, откуда нужно копировать. Положение фрагмента в фильме, т. е. координата х левого верхнего угла, определяется умножением ширины кадра на номер текущего кадра. Запускает процедуру DrawKadr процедура TForm1.Timer1Timer, обрабатывающая событие OnTiner.
