Anda di halaman 1dari 37

YAYASAN SASMITA JAYA

UNIVERSITAS PAMULANG
SK MENDIKNAS NO.136/D/0/2001

Jl. Surya Kencana No. 1 PamulangTangerang -Banten


Telp (021)7412566, Fax. (021)7412566

Mata Kuliah
Fak/Jurusan
Semester
Dosen
Sifat

:
:
:
:
:

Komputer Grafik
Teknik Informatika
6
Muhamad Meky Frindo M.Kom
-

Hari/Tgl
Waktu
Kelas
Shift
Jml Mhs

: Sabtu / 14 Mei 2016


:
:
: Sabtu
: -

UJIAN AKHIR SEMESTER


PERTEMUAN 1
Komputer Grafik adalah proses pembuatan, manipulasi, penampilan grafik (2D/3D), citra,
animasi dan sejenisnya ke display, layar komputer, printer, maupun devais lainnya
Teori dan Teknologi Pendukung
Sains dan Matematika
o Teori fisika mengenai cahaya, warna, dsb
o Ilmu geometri
o Matematika mengenai garis, kurva, bidang, dsb
Teknik
o Perangkat keras: Video card, Display, Sensor, Kamera, dll
o Perangkat lunak: Grafik library (DirectX, OpenGL), UI Framework,
Pemrograman
Seni dan Psikologi
o Persepsi: warna, tampilan
o Desain: komposisi, warna, pencahayaan, dsb

Yakin dan Berusaha !


Kejujuran cermin Kepercayaan Diri

PERTEMUAN 2
NetBeans merupakan IDE (Integrated Development Environment) yang sepenuhnya dibuat
dengan bahasa Java. Dengan NetBeans, pembuatan program Java akan menjadi lebih mudah
karena dalam IDE ini sudah terintegrasi tools-tools yang diperlukan untuk memprogram
dengan Java, seperti compiler, debugger, code profiler, designer, javadoc, dsb. NetBeans
dapat didownload secara gratis dari http://netbeans.org/, dan pada saat dokumen ini dibuat,
yang tersedia adalah versi 7.0. NetBeans dapat diinstall di berbagai sistem operasi, baik
Windows, Linux atau Mac. Untuk memulai membuat aplikasi, harus dibuat Project.
SourceCode latgui
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class latgui {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Aplikasi pertama - <NAMA ANDA>");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MainPanel panel = new MainPanel();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}}
SourceCode MainPanel
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class MainPanel extends JPanel {
public MainPanel() {
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

this.setPreferredSize(new Dimension(400, 150));


this.setBackground(Color.ORANGE);
}
public void paintComponent(Graphics g) { super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.drawRect(10, 10 , 40, 50);
g2.drawString("Komputer Grafik Latihan 1", 10, 70);
}}
Screenshoot

Java merupakan bahasa Pemrograman sekaligus Platform yang dikembangkan oleh James
Gosling ketika masih bergabung degan Sun Microsystem (Sekarang Oracle) dan dirilis tahun
1995. Bahasa pemrograman Java banyak mengadopsi sintaks yang terdapat pada bahasa
C/C++, sehingga penulisannya mirip sekali dengan bahasa C/C++. Hal ini sangat
memudahkan programer yang mempunyai latar belakang bahasa C/C++ untuk mempelajari
Java.
Program pertama ditulis dengan menggunakan text editor sembarang, lalu disimpan ke file
dengan ekstensi .java. Perhatikan, nama file harus sama dengan nama class pada program
tersebut. Kode sumber yang sudah disimpan kemudian dikompile dengan javac menjadi
.class file. Sebuah .class file berisi bytecodes yang merupakan bahasa mesin yang dapat
dipahami oleh Java Virtual Machine (Java VM). Java VM (java) inilah yang bertugas
menterjemahkan bytecodes tersebut menjadi bahasa mesin yang dapat dijalankan di berbagai
sistem operasi.
Platform Java
Platform adalah lingkungan perangkat keras atau perangkat lunak dimana sebuah aplikasi
dijalankan. Plat- form Java terdiri dari :
1. Java Virtual Machine (Java VM)
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

2. Java Application Programming Interface (API)


Variabel
Secara garis besar, sebuah aplikasi komputer menerima suatu masukan kemudian
memprosesnya untuk menghasilkan suatu keluaran. Sesuatu tersebut umumnya disebut
data dan agar dapat diproses dari program, harus disimpan di memori lalu diacu dengan
menggunakan variabel
Dalam bahasa Java, ada beberapa jenis variabel, yaitu:
1. Instance Variables (Non-static fields): Variabel untuk menyimpan state dari suatu
objek, unik untuk setiap objek.
2. Class Variables (Static fields): Variabel yang di-share dalam sebuah class dan hanya
ada satu.
3. Local Variables: Variabel yang digunakan untuk menyimpan nilai sementara dalam
sebuah method.
4. Parameters: Variable yang digunakan untuk memberikan nilai ke method.
Array
Array adalah sebuah objek kontainer yang terdiri dari beberapa elemen dengan tipe yang
sama. Panjang atau jumlah elemen dari sebuah array adalah konstan dan ditentukan pada saat
objek tersebut dialokasikan. Gambar 4 menunjukkan sebuah array dengan jumlah elemen 10,
sedangkan List 3 menunjukkan contoh kode array dalam bahasa Java. Setiap elemen dari
array dapat diakses dengan indek (mulai dari 0).
Operator
Dalam bahasa pemrograman Java disediakan operator untuk melakukan operasi aritmatika,
logika, bit, kom- parasi dan assignment. Pada intinya, persamaan (expresi) akan dievaluasi
dari kiri ke kanan dengan memperhatikan skala prioritas
Ekspresi, Pernyataan, dan Blok
Variabel dan operator adalah unit terkecil dari pemrograman. Kombinasi antara variabel dan
operator akan menghasilkan ekspresi (expression). 1+x, x+y/3, nilai>=80, dan sebagainya
adalah contoh ekspresi.
Komponen selanjutnya adalah pernyataan (statements). Pernyataan hampir sama dengan
kalimat dalam bahasa manusia. Pernyataan biasanya diakhiri dengan tanda titik koma (;).
Sekumpulan pernyataan akan membentuk blok (block). Sebuah blok ditandai dengan kurung
kurawal buka { dan kurung kurawal tutup }.
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

Control-flow
Pada dasarnya pernyataan-pernyataan dalam program dieksekusi dari atas ke bawah secara
berurutan (run- tunan). Namun ada kalanya diperlukan pengambilan keputusan , pengulangan
atau percabangan dalam sebuah program. Hal ini memungkinkan program kita mengeksekusi
ataupun mengulang sebuah blok pernyataan berdasarkan kriteria atau kondisi tertentu. Dalam
pokok bahasan ini akan dibahas mengenai pengambilan keputusan: if-then, if-then-else,
switch dan pengulangan: while, for, do-while serta percabangan: continue, break, return.
Class dan Object
Pemrograman berorientasi objek (OOP: Object Oriented Programming) adalah paradigma
pemrograman yang berorientasikan objek. Dalam PBO, program dipandang sebagai
kumpulan dari objek-objek yang saling berinteraksi satu sama lainnya.
Objek pada PBO, mengadopsi konsep objek pada dunia nyata. Yang dimaksud objek disini
adalah segala sesuatu yang ada disekeliling kita yang mempunyai state dan behavior. Contoh
objek yaitu TV, Mobil, Burung, Mahasiswa, Dosen, dan lain sebagainya. Untuk penjelasan,
kita ambil contoh objek Burung. State pada burung misalnya: warna, berat, lapar. Sedangkan
behavior menggambarkan perilaku dari burung misalnya: terbang, berjalan dan sebagainya.
State biasanya digambarkan dengan kata benda dan kata sifat, sedangkan behaviour
digambarkan dengan kata kerja.
Secara konseptual, objek pada program juga sama dengan objek pada dunia nyata yaitu
memiliki state dan behavior. State dari sebuah objek disimpan di dalam fields (atau bisa juga
disebut variabel), sedangkan behavior diekspose melalui method (atau ada yang menyebutnya
fungsi).
Didunia nyata, sering kita jumpai banyak objek dari jenis yang sama, contohnya ada banyak
mahasiswa, ada banyak TV, ada banyak mobil. Setiap objek yang tipenya sama memiliki
komponen ataupun blueprint yang sama pula. Dalam terminologi PBO, contohnya mobil
pribadi anda adalah instance dari class Mobil. Atau dengan kata lain, sebuah class adalah
blueprint untuk mencetak objek-objek.
PERTEMUAN 3
Grafik 2D
Memetakan objek-objek kedalam dunia 2 (dua) dimensi. Pemodelan dan Proses Rendering
relatif lebih mudah dari Grafik 3D (tidak perlu proyeksi, dll)
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

Konsep dasar Grafik 2D meliputi:


Rendering pipeline
Sistem koordinat (object, word, device)
Grafik primitif
Transformasi
Warna
Font, dan sebagainya
Proses Rendering
Konstruksi objek
Transformasi (rotasi, translasi, scaling)
Penambahan warna dan properti lain
Proses Render di Grafik Device
Sistem koordinat
Koordinat yang umum adalah koordinat kartesius
Sumbu x : horisontal
Sumbu y : vertikal
Posisi digambarkan sebagai titik (x, y)
Contoh-contoh objek geometri adalah elipse, kotak, lingkaran, segitiga, dll.
Ruang (Space)
Dalam computer grafik ada 3 ruang, yaitu :
Ruang objek
Ruang dunia
Ruang device
Sistem koordinat pada Java
Berikut adalah contoh system koordinat devais. Pojok kiri atas adalah titik (0,0), sumbu x
positif ke kanan, sumbu y positif ke kiri. Dalam Java, defaultnya, world space dan device
space sama.
Konsep Pixel
Piksel adalah representasi sebuah titik terkecil dalam sebuah gambar grafis. Piksel kecil
memiliki kualitas grafik lebih bagus. Contoh objek: Garis, segitiga, segiempat
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

Komponen-komponen Java 2D

Package-package yang terkait


Berikut adalah package-package yang sering diimport dalam program untuk komputer grafik
2D :
AWT:
java.awt, java.awt.color, java.awt.font, java.awt.geom,
java.awt.print, java.awt.image
Swing:
javax.swing, javax.swing.event, javax.swing.text
Image I/O:
javax.imageio
Class Graphic 2D
Graphics2D merupakan kelas utama untuk render objek 2 (dua) dimensi. Kelas ini memiliki
berbagai method yang dapat digunakan untuk membuat objek 2D
Source Code Grafik Canvas
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class GrafikCanvas extends JPanel{
public GrafikCanvas(){
this.setPreferredSize(new Dimension(400,150));
this.setBackground(Color.white);
}
public void paintComponent (Graphics g){
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Aplikasi Komputer Grafik");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GrafikCanvas canvas = new GrafikCanvas();
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
}
Screenshoot

PERTEMUAN 4
Proses penampilan UI
Komponen-komponen dari UI dalam Swing seperti Button, Label, Panel, Frame dsb
merupakan sub-class dari JComponent. Ketika sebuah komponen ditampilkan, di- repaint, diupdate maka method paint dari komponen tsb akan dipanggil.
Method-method pada Grafik2D
void draw(Shape s)
void fill(Shape s)
void setTransform(AffineTransform Tx)
void transform(AffineTransform Tx)
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

void setPaint(Paint p)
void setStroke(Stroke s)
void clip(Shape s)
void setComposite(Composite c)
void addRenderingHints(Map hints)
Interface Shape
Merupakan basis dari objek geometri . Mendefinisikan fungsi-fungsi dasar yang harus ada
pada semua objek geometri
contains(double x, double y)
contains(double x, double y, double w, double h)
contains(Point2D point)
contains(Rectangle2D rect)
getBounds()
getPathIterator(AffineTransform at)
intersect(double x, double y, double w, double h)
intersect(Rectangle2D rect)
Geometri Primitif
Geometri primitif terdiri dari titik, line, kurva quadratic, kurva kubik, rectangle, rounded
rectangle, eclipse, dan polygon.
General Path
Class untuk mengkonstruksi objek geometri yang terdiri dari Line, Curve dan QuadCurve
void moveTo(float x, float y);
void lineTo(float x, float y);
void quadTo(float x1, float y1, float x2, float y2);
void curveTo(float x1, float y1, float x2,
float y2, float x3, float y3);
void closePath();
Source code General Path
package komgrafik;
import java.awt.*;
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class ContohGeometri extends JPanel{
public ContohGeometri(){
this.setPreferredSize(new Dimension(400,300));
this.setBackground(Color.white);
}
public void paintComponent (Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
GeneralPath p = new GeneralPath(GeneralPath.WIND_NON_ZERO);
p.moveTo(-100.0f, -25.0f);
p.lineTo(+100.0f, -25.0f);
p.lineTo(-50.0f, +100.0f);
p.lineTo(+0.0f, -100.0f);
p.lineTo(+50.0f, +100.0f);
p.closePath();
g2.translate(250.0f,100.0f);
g2.draw(p);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Contoh-contoh objek geometri");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
ContohGeometri canvas = new ContohGeometri();
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);

Yakin dan Berusaha !


Kejujuran cermin Kepercayaan Diri

}
}
Screenshoot

PERTEMUAN 5
Komponen-komponen Shape
Points
Lines
Rectangular Shapes
Quadratic and Cubic Curves
Arbitrary Shapes (GeneralPath)
Areas
Geometri dengan GeneralPath
Class untuk mengkonstruksi objek geometri yang terdiri dari Line dan Curve
moveTo(x, y) Memindahkan titik Path ke (x,y)
lineTo(x, y) Membuat garis dari titik Path ke (x,y)
quadTo(x1, y1, x2, y2) Membuat kurva dari titik Path ke (x2, y2) dengan (x1, y1)
sebagai titik kontrol

Yakin dan Berusaha !


Kejujuran cermin Kepercayaan Diri

curveTo(x1, y1, x2, y2, x3, y3) Membuat kurva dari titik Path ke (x3, y3) dengan (x1,
y1) dan (x2, y2) sebagai titik kontrol
closePath() Menutup kurva dengan cara membuat garis dari titik Path ke posisi
moveTo yang terakhir
Source Code Geometri Mobil
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class GeometriMobil extends JPanel{
public GeometriMobil(){
this.setPreferredSize(new Dimension(400,300));
this.setBackground(Color.white);
}
protected void paintComponent (Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
GeneralPath gp = new GeneralPath();
gp.moveTo(60, 120);
gp.lineTo(80, 120);
gp.quadTo(90,140,100,120);
gp.lineTo(160, 120);
gp.quadTo(170,140,180,120);
gp.lineTo(200, 120);
gp.curveTo(195, 100,200,80,160,80);
gp.lineTo(110, 80);
gp.lineTo(90, 100);
gp.lineTo(60, 100);
gp.lineTo(60, 120);
gp.closePath();
g2.draw(gp);
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Contoh-contoh objek geometri");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
GeometriMobil canvas = new GeometriMobil();
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
}
Screenshoot

Class Area
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
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

exclusiveOr(Area a) : operasi XOR


Source Code Union
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class GeometriBulat extends JPanel{
public GeometriBulat(){
this.setPreferredSize(new Dimension(400,300));
this.setBackground(Color.white);
}
protected void paintComponent (Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Shape lingkaran = new Ellipse2D.Double(30,100,140,140);
g2.draw(lingkaran);
}
public static void main(String[] args) {
// TODO code application logic here
JFrame frame = new JFrame();
frame.setTitle("Geometri Bulat");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
GeometriBulat canvas = new GeometriBulat();
frame.getContentPane().add(canvas);
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

frame.pack();
frame.setVisible(true);
}
}
Screenshoot Union

Source code Intersect


package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class Intersect extends JPanel{
public Intersect(){
this.setPreferredSize(new Dimension(400,300));
this.setBackground(Color.white);
}
protected void paintComponent (Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Shape lingkaran = new Ellipse2D.Double(20,20,100,100);
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

Shape kotak = new Rectangle2D.Double(100,20,100,100);


Area area = new Area(lingkaran);
Area areaKanan = new Area(kotak);
area.intersect(areaKanan);
g2.setColor(Color.PINK);
g2.fill(area);
g2.setColor(Color.BLACK);
g2.draw(lingkaran);
g2.draw(kotak);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Contoh-contoh objek geometri");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
Intersect canvas = new Intersect();
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
}
Screenshoot Intersect

Yakin dan Berusaha !


Kejujuran cermin Kepercayaan Diri

Sourcecode Subtract
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class Subtract extends JPanel{
public Subtract(){
this.setPreferredSize(new Dimension(400,300));
this.setBackground(Color.white);
}
protected void paintComponent (Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Shape lingkaran = new Ellipse2D.Double(20,20,100,100);
Shape kotak = new Rectangle2D.Double(100,20,100,100);
Area area = new Area(lingkaran);
Area areaKanan = new Area(kotak);
area.subtract(areaKanan);
g2.setColor(Color.PINK);
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

g2.fill(area);
g2.setColor(Color.BLACK);
g2.draw(lingkaran);
g2.draw(kotak);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Contoh-contoh objek geometri");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
Subtract canvas = new Subtract();
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
}
Screenshoot Subtract

Source Code XOR


package komgrafik;
import java.awt.*;
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class XOR extends JPanel{
public XOR(){
this.setPreferredSize(new Dimension(400,300));
this.setBackground(Color.white);
}
protected void paintComponent (Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Shape lingkaran = new Ellipse2D.Double(20,20,100,100);
Shape kotak = new Rectangle2D.Double(100,20,100,100);
Area area = new Area(lingkaran);
Area areaKanan = new Area(kotak);
area.exclusiveOr(areaKanan);
g2.setColor(Color.PINK);
g2.fill(area);
g2.setColor(Color.BLACK);
g2.draw(lingkaran);
g2.draw(kotak);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Contoh-contoh objek geometri");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

});
XOR canvas = new XOR();
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
}

Screenshoot XOR

Method-method dalam Graphics


Secara garis besar ada 2 group method dalam Graphics
Draw dan fill untuk merender shape, text, image
Method untuk mengeset atribut dari objek grafik seperti Font, Warna, dsb
Menambahkan Text
Untuk menambahkan Text, gunakan method drawString(text, x, y) dimana x, y adalah posisi
baseline dari text yang ingin ditampilkan
PieChart
SourceCode PieChart
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

public class PieChart extends JPanel{


String [] nilaiujian={"A","B","C","D","E"};
int [] jumlahsiswa={3,10,23,5,2};
Color [] warna ={Color.BLUE,Color.ORANGE,Color.YELLOW,Color.GREEN,Color.RED};
protected void paintComponent (Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Shape bg = new Rectangle2D.Float(10,10,250,200);
g2.setColor(Color.LIGHT_GRAY);
g2.fill(bg);
g2.setColor(Color.GRAY);
g2.draw(bg);
float Total=0.0f;
for(int k=0;k<jumlahsiswa.length;k++)
Total +=jumlahsiswa[k];
float sudut, awal=90;
float lx=220, ly=70, lw=10,lh=10;
for(int k=0;k<jumlahsiswa.length;k++){
sudut=360.0f*jumlahsiswa[k]/Total;
Shape sektor = new Arc2D.Float(30,30,150,150,awal,sudut,Arc2D.PIE);
g2.setColor(warna[k]);
g2.fill(sektor);
awal +=sudut;
g2.fill(new Rectangle2D.Float(lx,ly,lw,lh));
g2.setColor(Color.BLACK);
g2.drawString(nilaiujian[k], lx + lw + 5, ly+lh);
ly +=(lh+5);
g2.setColor(Color.GRAY);
g2.drawString("Created by : Andre Alvi Agustian", 15, 205);
}
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

}
public static void main(String[] args) {
JFrame frame = new JFrame("PIE CHART");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
PieChart canvas = new PieChart();
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
}
ScreenShoot PieChart

PERTEMUAN 6
Warna pada Java2D
ClassColor,setColor
Warna umum,bisa dituliskan dengan namanya
o Contoh: Color.black, Color.BLACK, Color.darkGray, Color.DARK_GRAY
o Warna-warna yang didefinisikan: black, blue, cyan, darkGray, gray, green,
lightGray, magenta, orange, pink, red, white, yellow
Dibuat dengan constructor
Colour Constructor
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

Color(float r, float g, float b)


o Opaque/tidak transparan sRGB dengan range/skala antara (0.0 - 1.0).
Color(float r, float g, float b, float a)
o Warna sRGB dengan nilai transparansi alpha. Skala (0.0 - 1.0).
Color(int rgb)
o Opaque sRGB dengan Merah: bits 16-23, Hijau: bits 8-15, Biru: bits 0-7.
Color(int rgba, boolean hasalpha)
o sRGB dengan Alpha: bits 24-31, Merah: bits 16-23, Hijau: bits 8-15, Biru: bits
0-7
Color(int r, int g, int b)
o Opaque sRGB dengan nilai merah, hijau dan biru antara (0 - 255).
Color(int r, int g, int b, int a)
o Warna sRGB dengan nilai merah, hijau, biru dan alpha (0 - 255).
Stroke and Paint

Pola paint ada dua yaitu gradient dan texture.


Membaca image
o Tambahkan Package:
o javax.imageio, java.io, java.awt.image
o Buat objek untuk menangani file
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

o File file = new File(Nama File);


o Buka image dengan classImageIO
o BufferedImage img = ImageIO.read(file);
o Tampilkan image dengan drawImage

PERTEMUAN 7
SourceCode
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class DiagramPie extends JPanel{
String [] nilaiujian={"N01","N02","N03","N04","N05","N06","N07","N08","N09","N10"};
int [] jumlahsiswa={30,51,100,80,84,98,73,109,36,36};
Color [] warna
={Color.BLUE,Color.RED,Color.GREEN,Color.MAGENTA,Color.blue,Color.ORANGE,Col
or.GRAY,Color.PINK,Color.green,Color.magenta};
protected void paintComponent (Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Shape bg = new Rectangle2D.Float(10,10,300,300);
g2.setColor(Color.LIGHT_GRAY);
g2.fill(bg);
g2.setColor(Color.GRAY);
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

g2.draw(bg);
float Total=0.0f;
for(int k=0;k<jumlahsiswa.length;k++)
Total +=jumlahsiswa[k];
float sudut, awal=90;
float lx=220, ly=70, lw=10,lh=10;
for(int k=0;k<jumlahsiswa.length;k++){
sudut=360.0f*jumlahsiswa[k]/Total;
Shape sektor = new Arc2D.Float(30,30,150,150,awal,sudut,Arc2D.PIE);
g2.setColor(warna[k]);
g2.fill(sektor);
awal +=sudut;
g2.fill(new Rectangle2D.Float(lx,ly,lw,lh));
g2.setColor(Color.BLACK);
g2.drawString(nilaiujian[k], lx + lw + 5, ly+lh);
ly +=(lh+5);
g2.setColor(Color.GRAY);
g2.drawString("Created by : Andre Alvi Agustian", 12, 250);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("PIE CHART");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
DiagramPie canvas = new DiagramPie();
frame.getContentPane().add(canvas);
frame.pack();
frame.setVisible(true);
}
}
ScreenShoot
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

PERTEMUAN 8
Matriks dan Transformasi Geometri

Translasi

Yakin dan Berusaha !


Kejujuran cermin Kepercayaan Diri

Rotasi

Yakin dan Berusaha !


Kejujuran cermin Kepercayaan Diri

Skala
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

Koordinat Homogen
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

PERTEMUAN 9
Packages
Kelas-kelas utama pada Java 2D diorganisir dalam packages-packages berikut, yaitu:
o java.awt
o java.awt.geom
o java.awt.font
o java.awt.color
o java.awt.image
o java.awt.image.renderable
o java.awt.print
jawa.awt
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

AWT merupakan singkatan dari Abstract Window Toolkit. Package ini terdiri dari kelas-kelas
untuk men- dukung pemrograman GUI (Graphical User Interface), termasuk didalamnya
kelas-kelas untuk pemrogra- man grafik 2D. Berikut adalah kelas-kelas yang terkait dengan
Java 2D:
1. AlphaComposite

10. GraphicsDevice

2. BasicStroke

11. GraphicsEnvironment

3. Color

12. Paint

4. Composite

13. PaintContext

5. CompositeContext

14. Rectangle

6. Font

15. Shape

7. GradientPaint

16. Stroke

8. Graphics2D

17. TexturePaint

9. GraphicsConfiguration

18. Transparency

Alpha Composite
Kelas

AlphaComposite

membungkus

(mengenkapsulasi)

metode-metode

untuk

menggabungkan dan menampilkan objek-objek grafik yang overlap. AlphaComposite juga


dapat memiliki nilai alpha yang menunjukkan derajat transparansi dari objek dimana nilai 0.0
artinya 100 % transparan, sedangkan 1.0 tidak transparan.
SourceCode AlphaComposite
package komgrafik;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.swing.*;
public class GrafikKanvas extends JPanel {
public GrafikKanvas() {
this.setPreferredSize(new Dimension(700, 500));
this.setBackground(Color.WHITE);
}
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

public void paintComponent(Graphics g) {


super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.BLUE);
g2.drawString("DESTINATION (Rectangle)", 40, 20);
g2.setColor(Color.RED);
g2.drawString("SOURCE (Circle)", 300, 20);
g2.setColor(Color.BLACK);
drawComposite(g2, 0.5f);
}
public void drawComposite(Graphics2D g2, float alpha) { //jenis-jenis alpha composite
int [] alphaComp = {
AlphaComposite.SRC, AlphaComposite.DST_IN,
AlphaComposite.DST_OUT, AlphaComposite.DST_OVER,
AlphaComposite.SRC_IN, AlphaComposite.SRC_OVER,
AlphaComposite.SRC_OUT, AlphaComposite.CLEAR
};
String [] caption = {
"SRC", "DST_IN", "DST_OUT", "DST_OVER",
"SRC_IN", "SRC_OVER", "SRC_OUT", "CLEAR"
};
int x, y;
x = y = 40;
AlphaComposite ac;
AlphaComposite tac =
AlphaComposite.getInstance(AlphaComposite.SRC, 1.0f);
for (int j = 0; j < alphaComp.length; j++) {
ac = AlphaComposite.getInstance(alphaComp[j], alpha);
BufferedImage buffImg =
new BufferedImage(75, 80, BufferedImage.TYPE_INT_ARGB);
Graphics2D gbi = buffImg.createGraphics();
gbi.setColor(Color.BLUE);
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

gbi.fillRect(0, 0, 50, 50);


gbi.setColor(Color.RED);
gbi.setComposite(ac);
gbi.fillOval(25, 0, 50, 50);
g2.drawImage(buffImg, null, x, y);
g2.drawString(caption[j], x, y+70);
x += 80; }
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Aplikasi pertama - Andre Alvi Agustian");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GrafikKanvas panel = new GrafikKanvas();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
Screenshoot AlphaComposite

Clipping Area
Clipping area mendefinisikan area dari sebuah objek yang akan tampak ketika objek tersebut
di-render. Area yang berada diluar Clipping area, tidak akan ditampilkan pada saat proses
rendering.
SourceCode ClippingArea
package komgrafik;
import java.awt.*;
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.swing.*;
import javax.imageio.*;
import java.io.*;
public class ClippingArea extends JPanel {
public ClippingArea() {
this.setPreferredSize(new Dimension(700, 500));
this.setBackground(Color.WHITE);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
try
{
BufferedImage img = ImageIO.read(new File(
"/Users/atigagroup/Pictures/Glitch.png"));
Shape lingkaran = new Ellipse2D.Double(30, 30, 250, 250);
g2.clip(lingkaran);
g2.drawImage(img, 10, 10, 400, 300, null);
g2.setClip(null);
g2.drawString("Clipping: Glitch", 100, 350);
g2.drawImage(img, 300, 10, 400, 300, null);
g2.drawString("Gambar asli: Glitch", 400, 350);
}
catch(Exception e)
{}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Aplikasi pertama - Andre Alvi Agustian");
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ClippingArea panel = new ClippingArea();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
Screenshoot Clipping Area

PERTEMUAN 10
Font mendefinisikan tampilan,ukuran (dalam pt: point), style (Bold, Italic, Plain) dari text.
Font diidentifikasi dengan namanya, seperti: Arial, Times New Roman, Verdana, Comic Sans
MS dan sebagainya. Font yang memiliki tampilan yang mirip tercakup dalam satu keluarga
(font family).
Font Pada Java
o Objek Font dapat dibuat dengan kelas Font
o Konstanta-konstanta yang ada:
o BOLD, ITALIC, PLAIN, TRUETYPE_FONT
o Membuat objek
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

o Font theFont = new Font(Arial, Font.PLAIN, 10);


o Parameter 1, Name: nama/family dari font
o Parameter 2, Style: PLAIN,ITALIC,BOLD
o Parameter 3, Size: ukuran font, dalam point
o Membuat objek font dengan style sama ukuran berbeda
o Font fontBaru = theFont.deriveFont(30);
Menampilkan teks
Misal objek Graphics2D adalah g2d
o g2d.setFont(<objekFont>);
o g2d.drawString(<String>, <x>, <y>):
o <objekFont>: dibuat dengan kelas font
o <String>: Text yang akan ditampilkan
o <x>: posisi koordinat x dari baseline
o <y>: posisi koordinat y dari baseline
Font Render Context
FontRenderContext digunakan untuk mendapatkan informasi mengenai text yang akan dirender/ditampilkan
Line Metric
LineMetrics digunakan untuk mendapatkan informasi ukuran suatu text seperti: baseline,
ascent, height, leading, descent
Text Layout
Representasi grafik dari text, yang meliputi:
o Posisi cursor
o Highlight dari text
o Informasi metric seperti: baseline, ascent, descent
o Default font
o Rendering
Membuat objek TextLayout:
o TextLayout tl = new TextLayout(<String>, <Font>, <FontRenderingContext>);
Yakin dan Berusaha !
Kejujuran cermin Kepercayaan Diri

PERTEMUAN 11
Kurva Spline
Kurva spline merupakan kurva smooth yang dibentuk dengan persamaan polinom, dimana

Quadratic dan Cubic Curve


Quadratic dan Cubic merupakan kurva spline yang ada dalam Java2D (turunan kelas Shape).
Persamaannya adalah :

s2 = Quadratic, s3 = Cubic
B-Spline Curve
Persamaannya adalah :

dimana

Fractal
Fractal merupakan grafik yang tersusun dari komponen sederhana yang mirip.

Yakin dan Berusaha !


Kejujuran cermin Kepercayaan Diri