51346

Анимация в C++ Builder

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы: Написать программу, рисующую анимацию по заданному образцу. Общий вид программы следующий...

Русский

2014-02-09

73.5 KB

136 чел.

Лабораторная работа 1

Анимация в C++ Builder

Выполнил: Шуклецов М.А.

 ФРТ, гр. 2106

Цель работы: Написать программу, рисующую анимацию по заданному образцу.

Общий вид программы следующий:

Код программы:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

Graphics::TBitmap *back;

Graphics::TBitmap *plane;

Graphics::TBitmap *man;

Graphics::TBitmap *ground;

int x,y;

int x1,y1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

 back = new Graphics::TBitmap;   //Загрузка в память изображения

 back->LoadFromFile("sky.bmp");

 plane = new Graphics::TBitmap;

 plane->LoadFromFile("plane.bmp");

 plane->Transparent = true;   //Делает прозрачным белое поле вокруг изображения

 man = new Graphics::TBitmap;

 man->LoadFromFile("man.bmp");

 man->Transparent = true;

 ground = new Graphics::TBitmap;

 ground->LoadFromFile("ground.bmp");

 ground->Transparent = true;

 Image1->ClientHeight = back->Height;

 Image1->ClientWidth = back->Width;

 Form1->ClientWidth = back->Width;

 Form1->ClientHeight = back->Height;

 x = -60;

 y = 30;

 x1 = -60;

 y1 = 60;

 Timer1->Interval = 24;    //Задание интервала сброса таймера

 Timer1->Enabled = true;    //Включение таймера

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

 if ((!back->Empty) && (!plane->Empty ) ){  //Первоначальная прорисовка

 Canvas->Draw(0,0,back);        

 Canvas->Draw(x,y,plane);       

 Canvas->Draw(0,0,back);        

 Canvas->Draw(250,180,man);    

 }

 else {

   Canvas->TextOut(10, 10, "Ошибка загрузки битовых образов");

   }

TRect r;       //Определение переменной типа TRect

 r = Rect(x, y, x+plane->Width, y+plane->Height);  //Задание координат прямоугольника

 Canvas->CopyRect(r, back->Canvas, r);   //Перенос образ изображения на канву

 x = x+1;      //Изменение координаты

 Canvas->Draw(x, y, plane);    //Прорисовка самолета

 if ( x > Form1->Width + plane->Width + 10)  //проверка выхода за границы области

 {

       x = -60;

 }

    r = Rect(x1, y1, x1+plane->Width, y1+plane->Height);

 Canvas->CopyRect(r, back->Canvas, r);

 x1 = x1+ 2;

 Canvas->Draw(x1, y1, plane);

 if ( x1 > Form1->Width + plane->Width + 10)

 {

       x1 = -60;

 }

}

//---------------------------------------------------------------------------

Вывод: Мы научились получать подобие анимации.