Menampilkan File GIF

March 14, 2006 at 6:00 am | Posted in Code Samples | 4 Comments

by: Kusnassriyanto

Gambar dengan format GIF banyak digunakan khususnya bila kita ingin menampilkan animasi dalam aplikasi kita. Cara termudah menampilkan file GIF adalah menggunakan komponen yang sudah ada. Kita bisa menggunakan TGIFImage dari Anders Melander (Delphi 5). Bila kita menggunakan Delphi 6 atau Delhi 7, kita bisa gunakan TGIFImage yang sudah dimodifikasi oleh Finn Tolderlund, yang bisa di-download disini.

Cara menggunakannya sangat mudah karena kita bisa menggunakan komponen TImage. Setelah unit GIFImage di-uses dulu, panggil method LoadFromFile yang dimiliki Image1.Picture seperti ditunjukkan dalam contoh kode berikut.

procedure TForm1.Button1Click(Sender: TObject);
var vFile: string;
begin
  vFile := ExtractFilePath(ParamStr(0))+'meteor.gif';
  Image1.Picture.LoadFromFile(vFile);
end;

Tapi, cara diatas masih menyisakan masalah karena akan muncul Flicker. Untuk mengatasi flicker, kita ubah property DrawOptions yang dimiliki oleh TGIFImage.

procedure TForm1.Button2Click(Sender: TObject);
var vFile: string;
begin
  vFile := ExtractFilePath(ParamStr(0))+'meteor.gif';
  Image2.Picture.LoadFromFile(vFile);
  if Image2.Picture.Graphic is TGifImage then begin
    TGifImage(Image2.Picture.Graphic).DrawOptions :=
      TGifImage(Image2.Picture.Graphic).DrawOptions +
      [goDirectDraw];
  end;
end;

Dengan meng-include-kan goDirectDraw, maka Gambar yang ada dalam Picture.Graphics akan langsung digambar ke Canvas. Tapi cara ini-pun masih menyisakan masalah, yaitu Gambar tidak tampil secara persistent, sehingga bila kita pindah ke window lain dulu baru balik lagi ke Form yang kita buat maka hanya tampilan image saat itu yang ditampilkan. Jadi tampilannya tidak utuh.

Ternyata TGIFImage memiliki method Paint yang dapat digunakan untuk menggambar animated gif. Function ini akan meng-create sebuah thread yang selama hidupnya akan menggambar animasi di canvas tertentu. Return value function ini adalah thread tersebut. Agar tampilannya bisa persistent, canvas yang kita gunakan adalah canvas-nya Image. Contoh penggunaannya adalah sebagai berikut.

procedure TForm1.Button3Click(Sender: TObject);
var vFile: string;
begin
  vFile := ExtractFilePath(ParamStr(0))+'meteor.gif';
  FGIFImage := TGIFImage.Create;
  FGIFImage.LoadFromFile(vFile);
  Image3.Width := FGIFImage.Width;
  Image3.Height := FGIFImage.Height;
  FGIFImage.Paint(Image3.Canvas, Rect(0, 0, FGIFImage.Width,
    FGIFImage.Height), FGIFImage.DrawOptions);
end;

Anda dapat mendownload contoh programnya dari repository Delphindo. Kode tersebut dibuat dan sudah dites dengan Delphi 7.

4 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Bagaimana klo disimpan di database ? apakah bisa diload kembali ? contoh kasus dimasukkan di SQLServer 2000.

  2. Tidak masalah. Kita simpan dalam field berbentuk blob dengan format seragam (misalnya hanya gif saja). Bila format dalam blob tidak seragam maka harus ada cara membedakannya.
    Bila formatnya seragam, misalnya GIF, yang harus kita lakukan adalah :
    – Simpan data dari Blob ke Stream
    – Create object TGifImage.
    – Baca data dari stream dengan method LoadFromStream
    – Paint objek tersebut ke Image (seperti tertulis
    di artikel)
    HTH.

  3. saya sudah coba berulang – ulang tapi tetap tidak tahu caranya, apa TGIFImage perlu di instalkan dulu kedalam delphi 7 ? atau bagai mana

  4. Reblogged this on Air Mengalir.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: