PEWARNAAN OBJEK 2D

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));
}
}

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);
}
}

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);
}
}

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);
}
}

sumber : modul praktikum grafika komputer uin maulana malik ibrahim malang 2013

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s