Thursday, November 08, 2007

Draw text on an image

Programming Language : C#
Platform : Microsoft Windows 2000 or latest
Microsoft Windows Mobile 2003, 2005, dan 2006
.Net Framework 1, 2 dan 3
.Net Compact Framework 1 dan 2

Sebetulnya untuk menggambar text pada sebuah gambar dalam .Net sangat mudah, perintahnya bahkan hanya satu baris, tapi kesulitannya ada pada bagaiman seting parameter-parameter yang ada di dalamnya.

Syntax:

objGraphics.DrawString(string, Font, Brush, PointF);
objGraphics.DrawString(string, Font, Brush, PointF, StringFormat);

Syntaxnya mudah kan? Tapi ternyata banyak yang harus kita set terlebih dahulu, diantaranya adalah objGraphics, Font, Brush, dan PointF. Kita telusuri satu persatu, sehingga kita bisa mengerti bagaimana menggunakan function ini.

1. objGraphics
objGraphics adalah objek gambar, yaitu object dimana gambar berada. Yup hanya object bertipe Graphics saja yang memiliki function ini.

Syntax:
Bitmap myBitmap = new Bitmap("C:\\myImage.jpg");
Graphics g = Graphics.FromImage(myBitmap);

Kita juga bisa menggunakan picturebox, sehingga syntaxnya akan menjadi :
Graphics g = Graphics.FromImage(PictureBox1.Image);

2. Font
Font ini menentukan jenis font apa yang digunakan untuk menuliskan string tersebut. Tidak udah mebuat objek baru untuk yang satu ini, cukup gunakan new("Tahoma", 20) pada parameter Font. Ubah "Tahoma" sesuai dengan yang anda inginkan, tetapi ada dalam sistem anda. Dan ubah angka 20 menjadi ukuran font anda.

Syntax :
FontobjGraphics.DrawString(string, new Font("Tahoma", 20) , Brush, PointF);

3. Brush
Brush adalah warna apa yang akan kita gunakan untuk menuliskan string tersebut. Cara penggunaannya juga relatif mudah, cukup dengan mengetikkan Brushes dan titik, maka semua pilihan warna akan muncul. Pilih salah satunya. Ini bisa dilakukan langsung pada function DrawString.

Syntax:
objGraphics.DrawString(string, Font, Brushes.White, PointF);

4. PointF
PointF adalah lokasi dimana kita akan meletakkan tulisan kita tadi. Ini juga gampang, tinggal tulis syntax new RectangleF(0, 0, 500, 500) di tempatnya.

Syntax:
objGraphics.DrawString(string, Font, Brush, new RectangleF(0, 0, 500, 500));

5. StringFormat
Yang satu ini sih optional, lumayan agak ribet dan bikin coding kita agak panjang, tapi hey, it's ok kalo kita emang mau text kita diformat.


Syntax:
StringFormat strFormat = new StringFormat();
strFormat.Alignment = StringAlignment.Center;
strFormat.LineAlignment = StringAlignment.Center;
objGraphics.DrawString(string, Font, Brush, PointF, StringFormat);

Yah kira-kira seperti itu, mudah bukan? Untuk lebih advanced nya bisa anda coba untuk merubah brush tadi tidak dengan warna solid, tapi pattern atau image, Juga untuk pointF nya, anda bisa coba atur sesuai dengan lebar dan tinggi area tertentu.

Apa sih kegunaannya? Well, untuk Windows Form sih gak ada masalah, berhubung hampir semua kontrol di situ bisa di set transparan backgroundnya. Masalah nya muncul di .Net CF, baik yang versi 1 atau versi 2, dua-duanya tidak mendukung background transparansi. Jadi kalo anda membutuhkan background transparan di kontrol label, anda bisa menggunakan cara ini.

No comments: