Selamat Datang Di Weblog http://delphiscript.blogspot.com, Mari Kita Belajar Bersama Tentang Blogging, dan Internet Marketing
"Dan di antara manusia (ada) orang yang mempergunakan perkataan yang tidak berguna untuk menyesatkan (manusia) dari jalan Allah tanpa pengetahuan dan menjadikan jalan Allah itu olok-olokan. Mereka itu akan memperoleh azab yang menghinakan" [Q.S Luqman : 6]

Animasi grafis dasar pada delphi

Mungkin pernah Anda berpikir bisakah delphi menangani pemrograman grafis. Misalnya untuk membuat game visual. Jawabanya adalah bisa meski tidak disarankan. Cara berikut ini mungkin bisa dijadikan inspirasi untuk itu :
Pada kasus ini, kita akan membuat animasi dasar :
Sebuah pesawat bergerak ke atas dengan background langit berwarna hitam

Pertama siapkan dulu gambar berformat bmp, yaitu :
1. Gambar langit berwarna hitam (file langit.bmp)
2. Gambar pesawat dengan background putih (file pesawat.bmp)

3. Gambar inverse pesawat atau kebalikan gambar pesawat, jadi sama dengan gambar no 2 namun background hitam (file pesawat2.bmp) Letakkan pada direktori yang sama dengan file exe-nya nanti

Kemudian pada delphi kita menggunakan sebuah form saja dan komponen timer, lalu ubah kode unitnya seperti berikut. Tapi ingat jangan asal dikopi paste, sebab tiga kerangka procedure berikut bisa dibuat sendiri oleh delphi melalui object inspector tab event
procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Timer1Timer(Sender: TObject);

Berikut ini kodenya :

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
bg1,bg2,bg3,pesawat1,pesawat2:TBitmap;
pos,posisi:integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
bg1:=TBitmap.Create ; bg1.LoadFromFile('langit.bmp') ;

bg2:=TBitmap.Create ; bg2.Assign(bg1);

bg3:=TBitmap.Create ; bg3.Assign(bg1);

pesawat1:=TBitmap.Create ;
pesawat1.LoadFromFile('pesawat.bmp') ;
pesawat1.TransparentColor :=clwhite;

pesawat2:=TBitmap.Create ;
pesawat2.LoadFromFile('pesawat2.bmp') ;

posisi:=form1.height;
pos:=0;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
bg1.FreeImage ;
bg2.Freeimage;
bg3.Free;
pesawat1.Freeimage;
pesawat2.Freeimage;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var rt,ra:trect;
begin
bg2.Assign(bg1);
ra:=rect(0,0,pesawat1.Width,pesawat1.Height );
rt:=rect(400,posisi+30,450,posisi+80);

bg1.Canvas.CopyMode:=cmsrcand;
bg1.Canvas.CopyRect(rt,pesawat1.Canvas,ra);
bg1.Canvas.CopyMode:=cmsrcpaint;
bg1.Canvas.CopyRect(rt,pesawat2.Canvas,ra);
bg1.Canvas.CopyMode:=cmsrccopy;
canvas.Draw(50,0,bg1);


posisi:=posisi-1;
if posisi<-100 then posisi:=height-50; pos:=pos+1; if pos>300 then pos:=0;
end;

end.





Artikel yang berhubungan..