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.
- Sekarang, Anda bisa pasang iklan disini!
- Mau Tukeran Link Dengan Blog Ini? (Pengunjung Blog Ini Lebih dari 100/hari)
- Cek Jumlah Pengunjung
|