PAINTING AND STROKING Painting Pada pembahasan sebelumnya kita
PAINTING AND STROKING
Painting Pada pembahasan sebelumnya, kita telah melihat bagaimana bentuk-bentuk dari bidang grafis yang dibangun dengan API 2 D. Tetapi apa yang akan anda lakukan dengan bentuk bidang grafis tersebut ? Painting adalah proses filling (pengisian) pada tampilan objek grafis dengan warna, color gradient (pencampuran warna), atau texture (warna berkontur). Stroking adalah proses dari penggambaran sebuah garis bidang grafis. Anda dapat menggambar sebuah garis menggunakan lebar garis, jenis garis dan warna garis yang berbeda-beda.
Di sebelah kiri, ada sebuah lingkaran yang telah terisi dengan gradien color. Ditengah, sebuah lingkaran yang dimana garisnya diberi warna yang penuh (solid color) yang membuat telihat tebal. Dikanan, sebuah lingkaran dengan garis yang digambar dalam bentuk garis yang sama hanya saja garis tersebut di beri efek color gradient. Adapun kelas-kelas yang memproduksi gambar diatas menggunakan metode dan kelas seperti : set. Paint(), set. Stroke(), Gradient. Paint dan Basic. Stroke.
set. Paint() import import java. awt. Color; java. awt. Container; java. awt. Gradient. Paint; java. awt. Graphics 2 D; java. awt. geom. Ellipse 2 D; import javax. swing. JComponent; import javax. swing. JFrame; public class Main. Class{ public static void main(String[] args) { JFrame jf = new JFrame("Demo"); Container cp = jf. get. Content. Pane(); My. Canvas tl = new My. Canvas(); cp. add(tl); jf. set. Size(300, 200); jf. set. Visible(true); } } class My. Canvas extends JComponent { public void paint(Graphics g) { Graphics 2 D g 2 = (Graphics 2 D)g; Ellipse 2 D e = new Ellipse 2 D. Float(40, 120, 120); Gradient. Paint gp = new Gradient. Pai nt(75, Color. white, 95, Color. gray, true); g 2. set. Paint(gp); g 2. fill(e); } }
set. Stroke() import import java. awt. Basic. Stroke; java. awt. Color; java. awt. Container; java. awt. Graphics 2 D; java. awt. Shape; java. awt. Stroke; java. awt. geom. Rectangle 2 D; import javax. swing. JComponent; import javax. swing. JFrame; public class Main. Class{ public static void main(String[] args) { JFrame jf = new JFrame("Demo"); Container cp = jf. get. Content. Pane(); My. Canvas tl = new My. Canvas(); cp. add(tl); jf. set. Size(300, 200); jf. set. Visible(true); } } class My. Canvas extends JComponent { Shape shape; public My. Canvas() { shape = create(); } protected Shape create() { float cm = 72 / 2. 54 f; return new Rectangle 2 D. Float(cm, 2 * cm, c m); } public void paint(Graphics g) { Graphics 2 D g 2 = (Graphics 2 D) g; Stroke stroke = new Basic. Stroke(1, Basic. Stroke. CAP_BUTT, Basic. Stroke. JOIN_BEVEL, 0, new float[] { 3, 1 }, 0); g 2. set. Stroke(stroke); g 2. set. Paint(Color. black); g 2. draw(shape); } }
Gradient. Paint import java. awt. Basic. Stroke; import java. awt. Color; import java. awt. Dimension; import java. awt. Font. Metrics; import java. awt. Gradient. Paint; import java. awt. Graphics 2 D; import java. awt. Rendering. Hints; import java. awt. event. Window. Adapter; import java. awt. event. Window. Event; import java. awt. geom. Arc 2 D; import java. awt. geom. Ellipse 2 D; import java. awt. geom. General. Path; import java. awt. geom. Line 2 D; import java. awt. geom. Rectangle 2 D; import java. awt. geom. Round. Rectangle 2 D; import javax. swing. JApplet; import javax. swing. JFrame; public class Gradient. Paint. Demo 2 D extends JApplet { public void init() { set. Background(Color. white); set. Foreground(Color. white); } public void paint(Graphics g) { Graphics 2 D g 2 = (Graphics 2 D) g; g 2. set. Rendering. Hint(Rendering. Hints. KEY_ANTIALIASI NG, Rendering. Hints. VALUE_ANTIALIAS_ON); g 2. set. Paint(Color. gray); int x = 5; int y = 7; // fill Round. Rectangle 2 D. Double Gradient. Paint redtowhite = new Gradient. Paint(x, y, Color. red, 200, y, Color. blue); g 2. set. Paint(redtowhite); g 2. fill(new Round. Rectangle 2 D. Double(x, y, 200, 10)); g 2. set. Paint(Color. black); g 2. draw. String("Filled Round. Rectangle 2 D", x, 250); } public static void main(String s[]) { JFrame f = new JFrame(""); f. add. Window. Listener(new Window. Adapter() { public void window. Closing(Window. Event e) { System. exit(0); } }); JApplet applet = new Gradient. Paint. Demo 2 D(); f. get. Content. Pane(). add("Center", applet); applet. init(); f. pack(); f. set. Size(new Dimension(300, 300)); f. show(); } }
Basic. Stroke. import import public void paint(Graphics g) { Graphics 2 D g 2 = (Graphics 2 D) g; g 2. set. Stroke(new Basic. Stroke(3. 0 f)); g 2. set. Paint(Color. blue); Rectangle r = new Rectangle(5, 5, 200); g 2. draw(r); } public static void main(String s[]) { JFrame f = new JFrame(); f. add. Window. Listener(new Window. Adapter() { public void window. Closing(Window. Event e) { System. exit(0); } }); Basic. Stroke. Demo p = new Basic. Stroke. Demo(); f. get. Content. Pane(). add("Center", p); p. init(); f. pack(); f. set. Size(new Dimension(250, 250)); f. show(); } java. awt. Basic. Stroke; java. awt. Color; java. awt. Dimension; java. awt. Graphics 2 D; java. awt. Rectangle; java. awt. event. Window. Adapter; java. awt. event. Window. Event; import javax. swing. JFrame; import javax. swing. JPanel; public class Basic. Stroke. Demo extends J Panel { public void init() { set. Background(Color. white); } }
Solid Color Kelas java. awt. Color diimplementasikan ke antarmuka Paint. Dengan demikian jenis Color apa saja dapat digunakan untuk mengisi bidang dari sebuah shape. penanganan dari proses pewarnaan adalah kemungkinan besar yang dapat terus dikembangkan. Pada saat ini, perhatikan kelas-kelas dari Color yang menyertakan beberapa penamaan warna sebagai variabel static : public static final Color white; public static final Color light. Gray; public static final Color gray; public static final Color dark. Gray; public static final Color black; public static final Color red; public static final Color pink; public static final Color orange; public static final Color yellow; public static final Color green; public static final Color magenta; public static final Color cyan;
Solid Color Anda dapat menciptakan warna menggunakan nilai integer atau float : Public Color (int r, int g, int b) Konstruktor ini menciptakan Color yang baru menggunakan nilai yang dispesifikasikan untuk red, green dan blue. Nilai tersebut haruslah dalam rentang dari dan sampai 255. Public Color(float r, float g, float b) Konstruktor ini menciptakan Color yang baru dengan menggunakan nilai dari red, green dan blue. Nilai yang akan dipakai haruslah berada dalam rentang dari 0, 0 sampai 1, 0.
Solid Color import java. awt. *; import java. awt. geom. *; public class Solid. Paint extends Application. Frame { public static void main(String[] args) { Solid. Paint f = new Solid. Paint(); f. set. Title("Solid. Paint v 1. 0"); f. set. Size(200, 200); f. center(); f. set. Visible(true); } public void paint(Graphics g) { } }
Swing Color Chooser Dialog Public static Color show. Dialog(Component component, String title, Color initial. Color) Metode ini menampilkan dialog dari pilihan warna. Component yang disuplai digunakan sebagai komponen parent dari dialog tersebut. Dialog yang ada akan mensuplai title; pengaturan ini akan diinisialisasikan agar dpat menunjukkan initial. Color yang sudah diberikan.
import public { java. awt. *; java. awt. event. *; javax. swing. *; class Red. Town extends JFrame public static void main(String[] args) { new Red. Town(); } public Red. Town() { super("Red. Town v 1. 0"); create. UI(); set. Visible(true); } protected void create. UI() { set. Size(400, 400); set. Location(100, 100); get. Content. Pane(). set. Layout(new Grid. Bag. Layout()); JButton color. Button = new JButton("Choose a color. . . "); get. Content. Pane(). add(color. Button); color. Button. add. Action. Listener(new Action. Listener() {public void action. Performed(Action. Event ae) {Color c = JColor. Chooser. show. Dialog (Red. Town. this, "Choose a color. . . “, get. Background()); if (c != null) get. Content. Pane(). set. Background(c); }}); add. Window. Listener(new Window. Adapter() {public void window. Closing(Window. Event we) { System. exit(0); }}); } }
- Slides: 12