BAB 4 PEWARNAAN

advertisement
BAB 4
PEWARNAAN
Anda telah mempelajari bagaimana membuat objek geometri sederhana dan bentuk-bentuk kompleks
lainnya serta cara menentukan tipe-tipe garis (stroke) pada grafik. Dalam modul berikutnya akan dibahas
tentang cara menambahkan beberapa warna. Materi yang dipelajari meliputi pengisian warna (filling) yang
diterapkan dalam pembuatan objek geometri.
4.1 WARNA
Ketika objek geometri dibangun, objek tersebut dapat digambar dengan method fill(Shape) atau
draw(Shape) dalam Graphics2D. Untuk menentukan warna yang diganakan untuk menggambar objek,
method dari kelas Graphics berikut bisa digunakan:
void setColor(Color c)
Objek Color mendefinisikan sebuah warna. Kelas Color secara default menggunakan rentang warna
RGB, sebagai rentang warna standard. Warna yang terdiri dari Merah (Red), Hijau(Green), Biru(Blue) dan
komponen Alfa (Alpha). Komponen alpha mendefinisikan tingkat transparansi warna tersebut. Kelas Color
mendefinisikan nilai warna konstanta(constant) berikut::
black
blue
cyan
darkGray
gray
green
lightGray
magenta
orange
pink
red
white
yellow
Nama tersebut tidak mengikuti konvensi(convention) penamaan Java, yang mengatur bahwa konstanta
harus dalam huruf kapital. Sejak JDK 1.4, Anda bisa juga menggunakan konstanta baru: BLACK, BLUE,
CYAN, DARK_GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE, and
YELLOW.
Warna lain dengan mudah dapat dibangun menggunakan satu dari banyak konstruktor kelas Color. Anda
bisa langsung menentukan(specify) nilai RGB menggunakan konstruktor berikut:
Color(int r, int g, int b);
Color(int rgb);
Color(float r, float g, float b);
Versi pertama untuk menentukan ketiga komponen warna menggunakan nilai int dengan rentang 0-255.
Versi kedua mirip dengan yang pertama, tetapi ketiga nilainya dijadikan di-paket-kan dalam satu nilai int.
Versi ketiga menggunakan nilai float di rentang 0.0 – 1.0 untuk mendefinisikan komponen warnanya.
Konstruktor lain dari kelas Color mengijikan spesifikasi ruang warna.
Color(ColorSpace colorSpace, float[] components, float alpha);
Berikut adalah potongan program untuk menggambar tiga bujursangkar dengan warna berbeda:
public void paintComponent(Graphics g) {
g.setColor(Color.red);
g.draw(new Rectangle(0, 0, 100, 100));
g.setColor(new Color(0, 255, 128));
g.draw(new Rectangle(100, 0, 100, 100));
g.setColor(new Color(0.5f, 0.0f, 1.0f));
g.draw(new Rectangle(200, 0, 100, 100));
}
Berikut listing lengkap dari program di atas. Listing tersebut menunjukkan sebuah program yang
mendemonstrasikan gambar sebuah objek geometris dengan warna garis yang berbeda-beda.
Listing 4.1 TestStrokeGeom.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.font.*;
import java.awt.geom.*;
public class TestStrokeGeom extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Test Stroke-2");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new TestStrokeGeom();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}
public void init() {
JPanel panel = new Panel2D();
getContentPane().add(panel);
}
}
class Panel2D extends JPanel{
public Panel2D() {
setPreferredSize(new Dimension(500, 400));
setBackground(Color.white);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.red);
g2.draw(new Rectangle(0, 0, 100, 100));
g2.setColor(new Color(0, 255, 128));
g2.draw(new Rectangle(100, 0, 100, 100));
g2.setColor(new Color(0.5f, 0.0f, 1.0f));
g2.draw(new Rectangle(200, 0, 100, 100));
}
}
Latihan:
Ketiklah
kode
program diatas. Kemudian
compile
dan
jalankan. Apa
yang
dihasilkan
oleh
program tersebut? Jelaskan!
Jawab:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Berikut listing lengkap dari program yang mendemonstrasikan gambar sebuah objek geometris dengan
warna garis yang berbeda dengan warna area bidang-nya.
Listing 4.1 SegiPanjangWarna.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.font.*;
import java.awt.geom.*;
public class SegiPanjangWarna extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Persegi Panjang Warna");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new SegiPanjangWarna();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}
public void init() {
JPanel panel = new Panel2D();
getContentPane().add(panel);
}
}
class Panel2D extends JPanel{
public Panel2D() {
setPreferredSize(new Dimension(500, 400));
setBackground(Color.white);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
//gambar persegipanjang.
Rectangle2D.Double persegipanjang = new Rectangle2D.Double(300,100,100,50);
g2.setColor(Color.GREEN);
g2.fill(persegipanjang);
g2.setColor(Color.blue);
g2.setStroke(new BasicStroke(3.0f));
g2.draw(persegipanjang);
}
}
Latihan:
Ketiklah
kode
program diatas. Kemudian
compile
dan
jalankan. Apa
yang
dihasilkan
oleh
program tersebut? Jelaskan!
Jawab:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
4.1 KELAS GradientPaint
Kelas GradientPaint mendefinsikan jenis warna dengan warna yang bermacam-macam. Warna gradien
ditetapkan oleh dua poin dan dua warna. Ketika lokasi warna berpindah dari poin pertama ke poin kedua,
warna berubah secara berangsur-angsur pula dari warna yang pertama ke yang warna yang kedua. Warna
gradien dapat siklis (cyclic) atau tidak siklis (acyclic). Warna gradien siklis berulang dengan pola yang
sama secara periodik. Untuk membuat warna gradien tidak siklis (acyclic), konstruktor berikut dapat
digunakan:
GradientPaint(float x1, float y1, Color c1, float x2, float y2, Color c2);
Untuk membuat warna gradien siklis (cyclic), dapat digunakan konstruktor berikut:
GradientPaint(float x1, float y1, Color c1, float x2, float y2, Color c2,
boolean);
Berikut adalah contoh penerapan kelas GradientPaint dalam sebuah program Java.
Listing 4.2 SegipanjangWarnaGradient.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.font.*;
import java.awt.geom.*;
public class SegiPanjangWarnaGradient extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Persegipanjang warna-gradien");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new SegiPanjangWarnaGradient();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}
public void init() {
JPanel panel = new Panel2D();
getContentPane().add(panel);
}
}
class Panel2D extends JPanel{
public Panel2D() {
setPreferredSize(new Dimension(500, 400));
setBackground(Color.white);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
//gambar persegipanjang.
Rectangle2D.Double persegipanjang = new Rectangle2D.Double(300,100,100,50);
//membuat warna gradien tidak siklis (acyclic).
GradientPaint warnaGradien = new GradientPaint(300, 50, Color.green, 350,
50, Color.yellow);
g2.setPaint(warnaGradien);
g2.fill(persegipanjang);
g2.setColor(Color.blue);
g2.setStroke(new BasicStroke(3.0f));
g2.draw(persegipanjang);
//gambar persegipanjang.
Rectangle2D.Double persegipanjang2 = new Rectangle2D.Double(100,200,
200,50);
//membuat warna gradien siklis (cyclic).
GradientPaint warnaGradien2 = new GradientPaint(125,100,Color.green,
150,100,Color.yellow,true);
g2.setPaint(warnaGradien2);
g2.fill(persegipanjang2);
g2.setColor(Color.blue);
g2.setStroke(new BasicStroke(3.0f));
g2.draw(persegipanjang2);
}
}
Latihan:
Ketiklah
kode
program diatas. Kemudian
compile
dan
jalankan. Apa
yang
dihasilkan
oleh
program tersebut? Jelaskan!
Jawab:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Berikut contoh penerapan kelas GradientPaint lainnya dalam sebuah program Java.
Listing 4.3 SegiPanjangWarnaGradient1.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.font.*;
import java.awt.geom.*;
public class SegiPanjangWarnaGradient1 extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Outline Gradien");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new SegiPanjangWarnaGradient1();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}
public void init() {
JPanel panel = new Panel2D();
getContentPane().add(panel);
}
}
class Panel2D extends JPanel{
public Panel2D() {
setPreferredSize(new Dimension(500, 400));
setBackground(Color.white);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
//gambar persegipanjang.
Rectangle2D.Double persegipanjang2 = new Rectangle2D.Double(100,200,
200,50);
//membuat warna gradien asiklis (acyclic).
GradientPaint warnaGradien2 = new GradientPaint(125,100,Color.blue,
175,100,Color.darkGray,false);
g2.setStroke(new BasicStroke(10.0f));
g2.setPaint(warnaGradien2);
g2.draw(persegipanjang2);
}
}
Latihan:
Ketiklah
kode
program diatas. Kemudian
compile
dan
jalankan. Apa
yang
dihasilkan
oleh
program tersebut? Jelaskan!
Jawab:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Tugas Projek
Tahap III
Lengkapilah program yang sudah Anda buat sebelumnya dengan menu yang digunakan untuk pengaturan
warna garis pada objek geometri yang terpilih untuk ditampilkan. Lihat screenshot berikut:
Gambar 3.1 Menu (objek) persegipanjang, (tipe garis) tebal, gradien (warna) terpilih
Gambar 3.1 Menu (objek) lingkaran, (tipe garis) tebal, solid (warna) terpilih
Keterangan:
1. Tampilan di atas hanya merupakan contoh saja.
2. Dalam tahap III (ketiga) program ditambah kemampuan untuk pewarnaan yang digunakan untuk
menampilkan objek geometri saja.
3. Silahkan membuat program menurut kreativitas masing-masing, misalnya:
✔
Ditambah menu “pilihan warna”
untuk menentukan warna (merah, kuning, hijau, dll)
menggunakan radioButton.
✔
Ditambah TextField yang digunakan untuk menentukan ketebalan garis.
✔
Dll
4. Penambahan menu “warna” diharapkan dapat diselesaikan dalam satu minggu, supaya tidak
terbebani pada tahapan projek berikutnya.
5. Happy codding…!
--- End of File ---
Download