Create site free
Самолет летит по небу - Canvas - Графика и Игры в Delphi - Каталог статей - Mvi - развлечения
Среда, 08.02.2012, 14:17
Музыка, видео, игры - MVI
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Категории каталога
Bitmap [50]
Canvas [56]
DirectX и DelphiX [15]
Мини-чат
Наш опрос
Самая удобная обувь?=)
Всего ответов: 44
Главная » Статьи » Графика и Игры в Delphi » Canvas

Самолет летит по небу
unit aplane_;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons;

type
TForm1 = class(TForm)
Timer1: TTimer;
Image1: TImage;
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
var
Back, bitmap, Buf: TBitMap; // фон, картинка, буфер
BackRct: TRect; // область фона, которая должна быть
// восстановлена из буфера
BufRct: Trect; // область буфера, которая используется для
// восстановления фона

x, y: integer; // текущее положение картинки
W, H: integer; // размеры картинки

procedure TForm1.FormActivate(Sender: TObject);
begin
// создать три объекта - битовых образа
Back := TBitmap.Create; // фон
bitmap := TBitmap.Create; // картинка
Buf := TBitmap.Create; // буфер

// загрузить и вывести фон
Back.LoadFromFile('factory.bmp');
Form1.Image1.canvas.Draw(0, 0, Back);

// загрузить картинку, которая будет двигаться
bitmap.LoadFromFile('aplane.bmp');
// определим "прозрачный" цвет
bitmap.Transparent := True;
bitmap.TransParentColor := bitmap.canvas.pixels[1, 1];

// создать буфер для сохранения копии области фона,
// на которую накладывается картинка
W := bitmap.Width;
H := bitmap.Height;
Buf.Width := W;
Buf.Height := H;
Buf.Palette := Back.Palette; // Чтобы обеспечить соответствие палитр !!
Buf.Canvas.CopyMode := cmSrcCopy;
// определим область буфера, которая будет использоваться
// для восстановления фона
BufRct := Bounds(0, 0, W, H);

// начальное положение картинки
x := -W;
y := 20;

// определим сохраняемую область фона
BackRct := Bounds(x, y, W, H);
// и сохраним ее
Buf.Canvas.CopyRect(BufRct, Back.Canvas, BackRct);
end;

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

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// восстановлением фона (из буфера) удалим рисунок
Form1.image1.canvas.Draw(x, y, Buf);

x := x + 2;
if x > form1.Image1.Width then
x := -W;

// определим сохраняемую область фона
BackRct := Bounds(x, y, W, H);
// сохраним ее копию
Buf.Canvas.CopyRect(BufRct, Back.Canvas, BackRct);

// выведем рисунок
Form1.image1.canvas.Draw(x, y, bitmap);
end;

// завершение работы программы

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// освободим память, выделенную
// для хранения битовых образов
Back.Free;
bitmap.Free;
Buf.Free;
end;

end.
Скачать весь проект
Категория: Canvas | Добавил: mvi (01.11.2008)
Просмотров: 185 | Рейтинг: 0.0/0 |
Всего комментариев: 0

При копировании материалов данного сайта, ссылка на него обязательна!

Имя *:
Email:
Код *:
Форма входа
E-mail:
Пароль:
Поиск
Друзья сайта
Анекдоты
Реклама
Статистика


Рейтинг@Mail.ru

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2012 Хостинг от uCoz