Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Движение двоичного образа по фоновой картинке

Введение | Глава 1 | Рисование узоров | Рисование поля для различных игр | Для построения графиков | Построение графиков элементарных функций | Перемещение картинок | События от мыши | Движение образа по удерживанию левой кнопки мыши | Код клавиши |


Читайте также:
  1. II. УМСТВЕННОЕ ДВИЖЕНИЕ XVIII в.
  2. Quot; Последним прибыл от Вас поезд N …. Последним отправлен к Вам поезд N ….. Перегон свободен. Перехожу на движение по жезлам (подпись)".
  3. Quot; С ….. ч …. мин по ….. путиперегона …… действие блокировкизакрывается и устанавливается движениепоездов по телефонной связи по правиламоднопутного движения".
  4. Quot;Формирование Образа будущей России» - наша актуальная задача.
  5. V. МЕЖДУНАРОДНОЕ РЕВОЛЮЦИОННОЕ ДВИЖЕНИЕ РАБОЧЕГО КЛАССА
  6. V. ПАРТИЗАНСКОЕ ДВИЖЕНИЕ
  7. VI. НАЦИОНАЛЬНО-ОСВОБОДИТЕЛЬНОЕ ДВИЖЕНИЕ

Постановка задачи. Проект должен реализовать движение небольшого изображения по фоновой картинке, лежащей на форме (рис. 14).

 

 

Рис. 14. Движение пчелы

Реализация. Заготовьте два рисунка с расширением bmp, положите файлы в папку, в которой будет сохранен проект. Положите на форму две кнопки «Старт» и «Выход», а также таймер. При создании формы установите размер формы, равным размеру фонового изображения. С помощью метода Draw скопируйте фоновый рисунок на форму, а рисунок пчелы – левее формы (в начальный момент его не видим).

Код процедуры TForm1.FormCreate:

 

procedure TForm1.FormCreate(Sender: TObject);

begin

// создать два объекта - битовых образа

fon:= TBitmap.Create; // фон

fish:= TBitmap.Create; // картинка

// загрузить и вывести фон

fon.LoadFromFile('Роза.bmp');

Form1.Width:= fon.Width+8;

Form1.Height:= fon.Height;

Form1.Left:=0;

Form1.Top:=0;

cw:=Form1.Width;

ch:=Form1.Height;

button1.Left:=cw-60;

button1.Top:=ch-110;

button2.Left:=cw-60;

button2.Top:=ch-80;

// загрузить картинку, которая будет двигаться

fish.LoadFromFile('Пчела.bmp');

W:= fish.Width;

H:= fish.Height;

// определим "прозрачный" цвет

fish.Transparent:= True;

// начальное положение картинки

x:= -5;

y:= ch div 4;

dx:=10;

// определим сохраняемую область фона

Rct:=Bounds(x,y,W,H);

Timer1.Enabled:=false;

end;

В этой процедуре использованы следующие глобальные переменные:

fon, fish: TBitMap; // фон и картинка

x,y,dx: integer; // текущее положение картинки

W, H: integer; // размеры картинки

cw, ch: integer; // размеры формы

Rct: TRect; // положение и размер области фона,

// которая должна быть восстановлена

По кнопке «Старт» запускается таймер, и пчела начинает двигаться направо, а потом налево и т. д.

Имитация движения картинки основана на следующем. Сначала с помощью функции bounds определяем размеры области фона, равной размерам картинки. Затем организуем цикл в обработчике TForm1.Timer1Timer, и в этом цикле реализуем буквально следующее: «стираем пчелу, меняем ее координаты, копируем ее в новом месте». «Стирание» пчелы – это восстановление фона. Все это реализуется с помощью метода Canvas.CopyRect.

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

//Копируем прямоугольник фона

Canvas.CopyRect(Rct, fon.Canvas, Rct);

x:=x+dx; // Горизонтальное движение с отражением

if (x+w> cw)or(x<0) then

dx:=-dx;

// Определим сохраняемую область фона в измененных координатах

Rct:=Bounds(x,y,W,H);

// выведем рисунок

Canvas.Draw(x,y, fish);

end;

Ниже приведен код остальных процедур.

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

// Освободим память, выделенную

// для хранения битовых образов

fon.Free;

br.Free;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Timer1.Enabled:=true;

end;

procedure TForm1.FormPaint(Sender: TObject);

begin

Canvas.Draw(0,0,fon);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

 

Задание. Видоизмените проект так, чтобы движение образа было в разных направлениях.

2.3. Компонент TImage и его использование


Дата добавления: 2015-08-20; просмотров: 55 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
В случайных местах| В динамических приложениях

mybiblioteka.su - 2015-2024 год. (0.007 сек.)