PEMBUATAN ANIMASI TRANSPARAN FORM MENGGUNAKAN API - Coretan Kuliah

Sabtu, 08 Desember 2012

PEMBUATAN ANIMASI TRANSPARAN FORM MENGGUNAKAN API



            Tentunya ketika kita ingin membuat suatu program, kita ingin program kita lebih menarik dipandang oleh mata, para user pun lebih tertarik memakai program yang dinamis dan tidak monoton sehingga user akan betah berlama-lama menggunakan program tersebut.
Windows sendiri menyediakan banyak sekali rutin procedure yang dapat dimanfaatkan dan dipanggil setiap saat. Sebut saja fungsi win32 API, yaitu fungsi API windows yang berbasis 32bit yang sangat umum dan sangat banyak dokumentasi mengenainya  di internet. Sehingga akan lebih mudah untuk dimanfaatkan. Win32 API sendiri menyediakan banyak procedure siap pakai yang dapat dimanfaatkan untuk mempercantik dan membuat aplikasi yang kita buat lebih menarik.  Sebut saja library gdi32.dll yang merupakan gu dang kode pemrograman yang berorientasi untuk menangani grafik, sedangkan user32.dll dapat kita pakai untuk mengatub objek – objek yang terdapat di layar. Nah untuk membuat suatu form menjadi transparat kita membutuhkan fungsi API SetLayeredWindowAttributes dari user32.dll. selain itu kita juga membutuhkan 2 fungsi API tambahan untuk menjadikan form jendela yang kita buat berfungsi sebagai Layered window, yaitu GetWindowLong dan SetWindowLong dari user32.dll juga.

Untuk constanta yang kita butuhkan adalah GWL_EXSTYLE, WS_EX_LAYERED dan LWA_ALPHA.

Nah intinya kita memanggil fungsi SetLayeredWindowAttributes untuk menjadikan form menjadi transparan dengan Attribut LWA_ALPHA, LWA_ALPHA sendiri merupakan konstanta yang secara default bernilai 2.

Nah mari kita buat procedure untuk membut form menjadi transparent.
Di bagian awal kita harus membuat pendeklarasian fungsi API sehingga kita dapat memanggil fungsi tersebut, sebagai berikut.

function SetLayeredWindowAttributes(hWnd: HWND; crKey: Longint; bAlpha: Byte;dwFlags: Longint): Longint; stdcall;

function SetLayeredWindowAttributes; external user32;

dan juga kita harus memakai  file windows.pas di bagian uses;

procedure Make_Transparent (hWnd: Longint;Value: Byte);
  var
        WinInfo: Integer;
  begin
    WinInfo := GetWindowLong(hWnd, GWL_EXSTYLE);
  If Value < 255 Then
    begin
      WinInfo:= WinInfo Or (WS_EX_LAYERED);
      SetWindowLong (hWnd, GWL_EXSTYLE, WinInfo);
      SetLayeredWindowAttributes (hWnd, 0, Value, LWA_ALPHA);
    end
  Else
    begin
        WinInfo:= WinInfo Xor WS_EX_LAYERED;
        SetWindowLong (hWnd, GWL_EXSTYLE, WinInfo);
    End;

end;

dan untuk procedure tersebut tambahkan component scrollbar dengan nama scrollbar1 dan komponen label dengan nama lbl pada form, 


kemudian tuliskan kode berikut :

procedure TForm1.ScrollBar1Change(Sender: TObject);
var
        value:integer;
        initTrans: integer;
begin
        value:=scrollbar1.Position;
        initTrans:=255-round(value * 2.55);
        lbl.Caption := 'Transparansi = ' + inttostr(value) + ' %';
        Make_Transparent(self.Handle,initTrans);
end;

Dan berikut hasil compile program yang sudah kita buat tadi, dengan transparansi 32% yang menampilkan sebagian tampilan di belakang form :


Ok, sampai disini dulu penjelasan tentang pembuatan form transparan ini, semoga dapat menambah wawasan kita semua dan bermanfaat.. Amiiin

Salam hangat,

Agus Minanur Rohman

Tidak ada komentar:

Posting Komentar