Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2013, 13:33   #1
Katerina_K
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 19
Вопрос Движение растровых изображений в делфи

Движение растровых изображений в делфи

Здравствуйте!Будьте добры,подскажите,пожалуйста.Нужно нарисовать летящий самолет и летящая ему навстречу птица.Код написала ,но что-то не то.У меня получается,что самолет тащит за собой птицу.По отдельности они летят в разные стороны,но вместе не получается.Подскажите,пожалуйста,чт о не так)

код:
Код:

unit Unit1;

interface

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

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

var
  Form1: TForm1;
  bird,back,buf,bitmap:tbitmap;
  x,y,w,h:integer;
  width,height:integer;
  backrct,bitmaprct,bufrct:trect;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
back:=tbitmap.Create; //создание фона и птицы
buf:=tbitmap.Create;
bird:=tbitmap.Create;




back.LoadFromFile('sky.bmp');
Form1.ClientHeight:=back.Height;
Form1.ClientWidth:=back.Width;
form1.image1.Canvas.Draw(0,0,back);

bird.LoadFromFile('bird.bmp');
bird.Transparent:=true;
bird.TransparentColor:=bird.Canvas.Pixels[1,1];


w:=bird.width;
h:=bird.height;

buf.Width:=w;
buf.Height:=h;
buf.Palette:=back.Palette;
buf.Canvas.CopyMode:=cmSrcCopy;

bufrct:=bounds(0,0,w,h);
x:=-w;
y:=30;
backrct:=bounds(x,y,w,h);
buf.Canvas.CopyRect(bufrct,back.Canvas,backrct);

begin

bitmap:=tbitmap.Create;      //создание самолета
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:=30;
backrct:=bounds(x,y,w,h);
buf.Canvas.CopyRect(bufrct,back.Canvas,backrct);

end;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Enabled:=true;  //движение для птицы
timer1.Interval:=100;

form1.Refresh;
form1.Canvas.Draw(x,20,bird);
x:=x-5;
if x<-w then
begin
x:=Form1.ClientWidth;


end;
end;


procedure TForm1.Timer2Timer(Sender: TObject);
begin
timer2.Enabled:=true;
timer2.Interval:=100;                         
form1.Refresh;
form1.Image1.canvas.Draw(x,y,buf);
form1.Image1.Canvas.Draw(x,y,bitmap);
x:=x+8;
                                    //движение для самолета
if  x>form1.Width then
x:=-w;
backrct:=bounds(x,y,w,h);
buf.Canvas.CopyRect(bufrct,back.Canvas,backrct);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
bitmap.Free;
back.Free;
bird.Free;
buf.Free;
end;

end.
Katerina_K вне форума Ответить с цитированием
Старый 25.10.2013, 13:40   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Потому что координаты для отрисовки птицы и самолета одинаковые, они и летают "вместе". Введите вместо х и у переменные bird_x, bird_y, airplane_x, airplane_y и меняйте эти значения
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 25.10.2013, 14:24   #3
Katerina_K
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 19
По умолчанию

Спасибо большое!разобралась
Katerina_K вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
делфи,движение Ильгизуля Помощь студентам 2 23.05.2013 19:23
создание модуля Delphi для поворота растровых изображений.delphi Romka62 Помощь студентам 1 18.11.2012 15:22
Обработка растровых изображений и анимация в C++ Kravanet Visual C++ 0 01.12.2011 23:31
Какие форматы файлов растровых изображений нецелочисленные пиксели? Shuraken13 Помощь студентам 0 18.05.2011 14:23
Разработать программу для обработки растровых изображений, хранящихся в файлах формата BMP (BitMaP). yeskin Фриланс 5 19.12.2010 15:06