Anda di halaman 1dari 14

14/08/2013

1
Geometri Primitif
14/08/2013
2
Komponen-kompenen Shape
Points
Representasi lokasi (x,y) pada sistem koordinat. Tidak bisa di-render
Lines
Objek garis antara (x1, y1) dan (x2, y2)
Rectangular Shapes
Objek shape dengan bounding-box kotak dengan posisi (x, y) dan ukuran
(width, height)
Quadratic and Cubic Curves
Objek kurva (quadratic dan cubic)
Arbitrary Shapes (GeneralPath)
Objek geometri sembarang yang terdiri dari garis dan kurva
Areas
Konstruksi objek geometri kompleks melalui operasi boolean seperti
union, intersect dan subtract dari beberapa objek geometri.
14/08/2013
3
Areas
Cara untuk membuat objek geometri yang komplek
melalui operasi boolean seperti union, subtract, intersect
add(Area a) : operasi union/gabungan
intersect(Area a) : operasi intersect/irisan
subtract(Area a) : operasi pengurangan
exclusiveOr(Area a) : operasi XOR
Area: union/gabungan
14/08/2013
4
Area: intersect/irisan
Area: subtract/pengurangan
14/08/2013
5
Area: XOR
Praktek Memcoba Area
Buka netbean ver 7
Buat projek baru pilih catagories : java
Project : java application next
Beri nama projekkomputergrafik finish
Pada nama projek atau Source Package klik
kanan pilih New Pilih Jframe Form
Isikan Class name : CobaArea
Pada Source code tambahkan method paint
14/08/2013
6
Method Paint
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
//definisikan dua objek lingkaran
Shape s1 = new Ellipse2D.Double(0, 0, 100, 100);
Shape s2 = new Ellipse2D.Double(60, 0, 100, 100);
//definisikan area untuk masing-masing shape
Area a1;
Area a2 = new Area(s2);
g2.setColor(Color.orange);
g2.translate(20, 50);
g2.draw(s1);
g2.draw(s2);
g2.translate(0,200);
a1 = new Area(s1);
// menggabungkan2 objek
a1.add(a2);
g2.fill(a1);
g2.translate(180,0);
a1 = new Area(s1);
a1.intersect(a2);
g2.fill(a1);
g2.translate(180,0);
a1 = new Area(s1);
a1.subtract(a2);
g2.fill(a1);
g2.translate(180,0);
a1 = new Area(s1);
a1.exclusiveOr(a2);
g2.fill(a1);
}
14/08/2013
7
Text
Untuk menambahkan Text, gunakan method
drawString(text, x, y) dimana x, y adalah posisi
baseline dari text yang ingin ditampilkan
Teks
teks merupakan jenis khusus dari objek
geometris.
Sebuah string teks diwakili oleh urutan karakter
dengan skema pengkodean standar, seperti ASCII
dan Unicode.
Bentuk render yang sebenarnya dari karakter
ditentukan oleh font standar.
Geometri menggambarkan bentuk karakter
dikenal sebagai GLYPH.
Sebuah font adalah kumpulan glyph untuk
seluruh alfabet
14/08/2013
8
Huruf, angka dan karakter lain ditampilkan dalam
berbagai
ukuran (size) dan
style.
Jenis huruf dibagi menjadi 4 macam, yaitu
serif,
sanserif,
agyptian dan
dekoratif.
Serif
Huruf dalam kategori serif mempunyai kait pada ujungnya.
Misalnya : times new roman, book antiqua.
Sanserif
Huruf dalam kategori sanserif tidak mempunyai kait pada ujungnya.
Misalnya : arial, helvetica, tahoma.
Agyptian
Huruf dalam kategori agyptian mempunyai kait dengan bentuk segi
empat yang mempunyai karakter kokoh.
Dekoratif
Huruf dalam kategori dekoratif mempunyai bentuk indah. Misalnya
: monotype corsiva
14/08/2013
9
Dua macam metode dapat digunakan untuk menyimpan
jenis huruf dalam komputer.
Metode sederhana bitmap menggunakan pola grid dengan
bentuk segi empat, dan karakternya disebut dengan
bitmap font. Grid dari karakter dipetakan pada posisi frame
buffer, bit yang mempunyai nilai 1 berhubungan dengan
tampilan pixel pada monitor.
stroke menggunakan garis lurus dan kurva, karakternya
disebut dengan outlilne font. Huruf ditampilkan menurut
koordinat relatif (x,y) dimana pusat dari koordinat adalah
pada posisi kiri bawah dimana karakter pertama yang
ditampilkan
Objek font dapat dibuat dengan constructor
Font(String name, int style, int size)
Pada graphics2D Font objek dapat digunakan
dengan method
void setFont(Font font)
metode untuk menggambar teks:
void drawString(String s, int x, int y)
void drawString(String s, float x, float y)
14/08/2013
10
Selain menerapkan font yang ada dalam sistem,
juga memungkinkan untuk mendapatkan font
baru dari yang sudah ada dengan memodifikasi
atribut tertentu. Metodenya
Font deriveFont(int style)
Font deriveFont(float size)
Font deriveFont(int style, float size)
Font deriveFont(AffineTransform tx)
Font deriveFont(int style, AffineTransform tx)
Font deriveFont(Map attributes)
Mencoba Atribut Teks
14/08/2013
11
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
String words = "Valour fate kinship darkness";
String java = "Java TM";
Font font = new Font("Serif", Font.PLAIN, 40);
AttributedString as1 = new AttributedString(words);
as1.addAttribute(TextAttribute.FONT, font);
as1.addAttribute(TextAttribute.FOREGROUND, Color.red, 0, 6);
as1.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, 7, 11);
as1.addAttribute(TextAttribute.BACKGROUND, Color.LIGHT_GRAY, 12, 19);
as1.addAttribute(TextAttribute.STRIKETHROUGH,
TextAttribute.STRIKETHROUGH_ON, 20, 28);
g2d.drawString(as1.getIterator(), 15, 60);
AttributedString as2 = new AttributedString(java);
as2.addAttribute(TextAttribute.SIZE, 40);
as2.addAttribute(TextAttribute.SUPERSCRIPT,
TextAttribute.SUPERSCRIPT_SUPER, 5, 7);
g2d.drawString(as2.getIterator(), 130, 125);
}
14/08/2013
12
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
Font font = new Font("Serif", Font.BOLD, 144);
FontRenderContext frc = g2.getFontRenderContext();
GlyphVector gv = font.createGlyphVector(frc, "Java");
Shape glyph = gv.getOutline(100,200);
g2.setClip(glyph);
for (int i = 0; i < 2000; i++) {
Shape shape = new Ellipse2D.Double(Math.random()*500,
Math.random()*400, 30, 20);
g2.draw(shape);
}
}
14/08/2013
13
Tugas Membuat Logo
Buatlah logo dibawah ini
14/08/2013
14

Anda mungkin juga menyukai