Membuat Animasi Water Tank Level di Lazarus dengan BGRA Bitmap
Visualisasi level air pada sebuah tangki sering digunakan dalam sistem SCADA, HMI, maupun aplikasi monitoring sederhana. Dengan Lazarus + BGRA Bitmap, kita bisa membuat animasi water tank level yang interaktif, misalnya dengan slider (TrackBar) untuk mengatur ketinggian air.
pada artikle kali ini saya hanya memfokuskan pada pengendalian animasi sederhananya jadi belum terkoneksi dengan rangkaian elektronik dan itu akan di bahas pada artikle lainnya, semoga secepatnya tinggalkan komen jika memang menginginkannya.
![]() |
ini gambar background "test.bmp" |
Persiapan Komponen
Buat sebuah form baru di Lazarus, lalu tambahkan komponen berikut:
-
TBGRAVirtualScreen
→ untuk menggambar grafik. -
TTrackBar
→ untuk mengatur tinggi air. -
TLabel
→ untuk menampilkan koordinat mouse. -
Tambahkan juga unit BGRABitmap dan BGRABitmapTypes pada bagian
uses
.
Logika Utama Program
Ada beberapa poin penting dalam program ini:
-
Inisialisasi Tangki dan Warna
Di sini kita tentukan posisi, ukuran tangki, dan warna air.
-
Memuat Background
Background hanya diload sekali saat
FormCreate
. -
Kontrol Level Air dengan TrackBar
Nilai TrackBar dihubungkan dengan tinggi air di tangki.
-
Menggambar Ulang pada VirtualScreen
Bagian ini yang membuat animasi level air naik-turun sesuai posisi TrackBar.
-
Menjaga Proporsi Background
Ada perhitungan aspect ratio agar background tidak gepeng ketika digambar ulang.// hitung aspect ratio
imgRatio := background.Width / background.Height;
scrRatio := Bitmap.Width / Bitmap.Height;
if imgRatio > scrRatio then
begin
// gambar lebih lebar daripada layar → sesuaikan lebar penuh
drawWidth := Bitmap.Width;
drawHeight := Round(drawWidth / imgRatio);
xOff := 0;
yOff := (Bitmap.Height - drawHeight) div 2;
end
else
begin
// gambar lebih tinggi daripada layar → sesuaikan tinggi penuh
drawHeight := Bitmap.Height;
drawWidth := Round(drawHeight * imgRatio);
yOff := 0;
xOff := (Bitmap.Width - drawWidth) div 2;
end;
// gambar background dengan stretch proporsional-- jangan lupa urutan menggambarnya
Bitmap.StretchPutImage(Rect(xOff, yOff, xOff+drawWidth, yOff+drawHeight), background, dmSet);
Kekurangan dari animasi yang saya buat adalah meletakkan objectnya, kordinatnya harus di cari secara manual makanya pada form ini bisa di lihat ada label yang menampilkan kordinat mouse pada virtualscreen dari BRGAbitmap, bisa di lihat disini
jadi baru mencari dulu kordinat yang di perlukan dengan menjalankan aplikasi dan mencatat kordinat mouse secara manual saya masih belum dapat cara yang lebih mudah lagi jadi jika banyak object maka kesulitan dalam mengumpulkan kordinat ini juga bertambah.
mudah2an nantinya ada yang bisa menyumbangkan idenya untuk mengatasi hal ini
berikut adalah source code lengkapnya dan jangan lupa silahkan di instal komponen BRGABitmapnya terlebih dahulu.
dan berikut adalah lazarus formnya :
No comments:
Post a Comment