Membuat form dengan bentuk mengikuti gambar

Umumnya sebuah form yang kita buat menggunakan delphi bentuknya adalah kotak, namun sebenarnya kita bisa membuat form dengan bentuk yang tidak biasa seperti lingkaran, segitiga, poligon atau bahkan bentuk sesuai yang kita inginkan, misalnya mengikuti bentuk gambar.

Untuk membuat (baca:memotong) form menjadi tidak kotak kita menggunakan fungsi dari Windows API yaitu SetWindowRgn.

Pada SetWindowRgn telah disediakan bentuk-bentuk umum seperti kotak, lingkaran atau segi banyak.

Lantas .. bagaimana cara membuat form dengan bentuk yang tidak umum seperti gambar diatas?

Untuk membuat region dengan bentuk tidak biasa perlu dibuat (baca: copas dari internet) unit (fungsi) sehingga lebih mudah dan tidak perlu pusing.

Langsung saja ..

Pertama-tama siapkan dua buah gambar seperti berikut yang nantinya akan diload ke TImage (imgNormal & imgMask).

Gambar pertama diload ke imgNormal

Gambar kedua diload ke imgMask

Ukuran dari kedua gambar harus sama persis.

… yang perlu diperhatikan dalam membuatnya adalah ..

  • Set property BorderStyle pada form menjadi bsNone.
  • Siapkan 2 buat TImage (imgNormal & imgMask), imgNormal untuk menyimpan gambar yg tampil dan imgMask untuk menyimpan gambar pemotong.
  • Set Property Left & Top imgNormal menjadi 0 sehingga akan berada di kiri atas form.
  • Set Propeety AutoSize imgNormal menjadi True.
  • Set property visible pada imgMask menjadi False.

Berikut ini contoh potongan kode yang akan kita tulis di event OnCreate

procedure TFMain.FormCreate(Sender: TObject);
var
   hr,br: HRGN;
   bmp: TBitmap;
begin
     bmp:=TBitmap.Create;
     bmp.Assign(ImgMask.Picture.Graphic);
     hr:=BitmapToRegion(bmp.Handle);
     bmp.Free;
     br:=CreateRectRgnIndirect(mInfo.BoundsRect);
     CombineRgn(hr,hr,br,RGN_OR);
     br:=CreateRectRgnIndirect(btClose.BoundsRect);
     CombineRgn(hr,hr,br,RGN_OR);
     SetWindowRgn(Handle,hr,True);
end;

Karena form ini tidak mempunyai Caption, lantas bagaimana caranya jika kita ingin menggesernya?
Agar form bisa kita geser dengan Click-Drag pada selain Caption, maka kita harus melakukan intercept pada Message WM_NCHITTEST seperti kode berikut ini

  private
    { Private declarations }
    procedure GeserForm(var msg: TWMNCHitTest);
              message WM_NCHITTEST;

Bagi yang tertarik untuk membuat aplikasi dengan form seperti gambar diatas silahkan download contoh project beserta source codenya di ..
https://www.box.com/s/n29a3n5x10srvrr1jvqg

Semoga bermanfaat
Wassalam

Imam Chalimi Muslim

3 Comments to Membuat form dengan bentuk mengikuti gambar

  1. Joko Rivai says:

    Luar biasa!
    Thanks bang @Imam, Insya Allah semakin bertambah ilmunya dan makin berkah 🙂

  2. ijin copas ya pak Imam….

  3. Imam Chalimi says:

    silahkan mas 😀

Leave a Reply

Your email address will not be published. Required fields are marked *