11.1. Text
Text grafik terdiri dari 3 jenis:
1. Hadware text:
• Character yang tersimpan dalam terminal grafik.
• Digambar dengan cepat.
• Umumnya hanya tersedia satu ukuran dan terbatas.
2. Vector text
• Menghasilkan kualitas huruf yang tinggi / baik
• Setiap huruf terdiri dari sekumpulan polyline (stroke font)
• Ada yang dibuat dengan kurva yang kompleks seperti spline (true type font)
• Dapat di scaled, rotated , dll.
3. Bitmap Text.
• Setiap huruf tersimpan sebagai bitmap.
• Scaling menghasilkan huruf yang kasar.
1 2 3 4 5 6 7 8
1 1 1 1 1 1 0 0
0 1 1 0 0 1 1 0
0 1 1 0 0 1 1 0
0 1 1 1 1 1 0 0
0 1 1 0 0 1 1 0
0 1 1 0 0 1 1 0
1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0
= Titik Awal
Algorithma :
- Lebih baik dari metode Flood Fill ( Stack overflow kemungkinan lebih kecil)
Algorithma:
Push address of seed pixel on the stack;
While stack not empty Do
Begin
Pop the stack to provide the next seed;
Fill in the run defined by the seed;
Examine the row above for run reachable from this run;
Push the address of the right most pixels of each such run;
Do the same for row below the current run;
End;
Contoh: e6 e7
e1
e5
e4
3
e3 e2
0 1 2 7 9
- Sca line pada y=3 berpotongan dengan empat sisi e2, e3, e4, dan e5.
- Titik perpotongan pada x=1, 2, 7, 9.
- Fill : 1 ke 2, 7 ke 9.
- Poligon tersebut kemudian di scanline 1 s/d 9
Langkah Praktikum :
1) Aktifkan program Java Netbeans.
2) Pilih Project GrafikaKomputer dan klik kanan pada subfolder source package
GrafikaKomputer dan Pilih New dan Java Main Class baru seperti gambar 11.4.
berikut:
Gambar 11.4. Menambahkan Java main Class baru pada project
3) Ketik nama Class Aplikasi dengan Praktikum10, lalu klik Finish seperti gambar
11.5. berikut:
4) Tambahkan kode berikut untuk Menggambar Text dan area filling , pada Frame
dengan ukuran 500 X 400 Piksel, sehingga code secara keseluluhan sebagai
berikut:
package grafikkomputer;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.font.*;
import java.awt.geom.*;
// draw an ellipse
Shape ellipse = new Ellipse2D.Double(150, 100, 200, 200);
GradientPaint paint =
new GradientPaint(100,100, Color.white, 400, 400, Color.gray);
g2.setPaint(paint);
g2.fill(ellipse);
// set transparency
AlphaComposite ac =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f);
g2.setComposite(ac);
g2.setColor(Color.blue);
}
}
5) Jalankan Program sehingga hasilnya akan tampak seperti gambar 11.6. berikut:
TUGAS:
Lakukan modifikasi program aplikasi area filling untuk bangun pentagonal dengan
warna fill merah seperti berikut.