BasicStroke(float width, int cap, int join, float miterlimit)

dokumen-dokumen yang mirip
4.1 WARNA Ketika objek geometri dibangun, objek tersebut dapat digambar dengan method fill(shape) atau

BAB 2 DASAR-DASAR GRAFIK 2D

BAB I PENDAHULUAN. Listing 1.1 menunjukkan program GUI Java sederhana menggunakan AWT. import java.awt.*; import java.awt.event.*;

Graphics2D dan Geometry

Tutorial A Menggambar Bendera Merah Putih Pada Frame

Aplikasi Grafik Menggunakan Netbeans

Membuat Menu Login Sederhana [Full Coding]

GUI (Grapichal User Interface)

PAKET (PACKAGE) 20 Januari 2012

Slide 6: Writing Classes

Modul 2. [access specifier] [tipe data] [nama variabel];

Dasar Perancangan Graphical User Interface

MODUL PRAKTIKUM BERORIENTASI OBJEK NINF615 SEMESTER GASAL 2016/2017 PROGRAM STUDI S1 TEKNIK INFORMATIKA

Materi : GUI AWT & SWING.

BINA NUSANTARA UNIVERSITY NATA LASE

Modul Praktikum 8 Pemograman Berorientasi Objek

Modul Praktikum 9 BAB IX LAYOUTING. Departemen Teknologi Informasi Telkom Applied Science School H a l

MODUL PRAKTIKUM KE 3 A.

BAB IX. USER INTERFACE

KASUS INHERITANCE. (Window, Multithreading dan Applet)

GUI & Event Handling. Viska Mutiawani, M.Sc. 1 Viska Mutiawani - Informatika FMIPA Unsyiah

Materi 5 Pemrograman Visual

Membuat Frame, Label, TextField dan Button di Java [Full Coding]

GUI & Event Handling. Viska Mutiawani, M.Sc

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Materi 2 Pemrograman Visual

IF PEMROGRAMAN LANJUT GRAPHICAL USER INTERFACE (GUI) 11 DENGAN SWING. Oleh : Andri Heryandi, M.T.

Modul Praktikum 7 Pemograman Berorientasi Objek

Dwiny Meidelfi, M.Cs

Francisco Silvano

Anonymous Inner Class

MODUL 7 - EXCEPTION HANDLING

PEMROGRAMAN II. Materi : nursari2010.blogdetik.com String String Handling Java.util,Java.io. By : Sri Rezeki Candra Nursari

Grafis & Applet. Viska Mutiawani, M.Sc

A. TUJUAN PEMBELAJARAN

Pemrograman Java. Pertemuan VIII By: Augury

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

PEMROGRAMAN BERORIENTASI OBJEK

Class & Object 2 ~Praktikum~ Imam Fahrur Rozi

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

LAB02 : KODING PROGRAM

Graphical User Interface (GUI)

Tutorial FDM Nurul Huda 2008, bundled by samsonasik. Modul Java 1

MODUL III ARRAYLIST TUGAS PENDAHULUAN

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Modul 08. User Interface 01

1. Latar Belakang 2. Tujuan

SISTEM INFORMASI PENJUALAN SATE BERBASIS JAVA. Disusun oleh : Rahmat Hidayat

Pemrograman Berorientasi Obyek. Ramos Somya

PERTEMUAN VI AWT DAN SWING TUJUAN PRAKTIKUM. 1. Praktikan mengenal pembuatan GUI pada Java. 2. Praktikan memahami action pada objek dalam Java.

Pemrograman Berbasis Java PERSEWAAN PELAMPUNG. Riska Nony Oktaviani Kelas 21 Teknik Informatika Teknologi Informasi

A. TUJUAN PEMBELAJARAN

TUGAS PEMROGRAMAN BERBASIS JAVA ADARA HIJAB

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Berorientasi Objek (PBO) By : Jeffry Montolalu, ST PERTEMUAN XII KELAS DAN OBYEK

INTERAKSI ANTAR OBJECT

A. TUJUAN PEMBELAJARAN

IF PEMROGRAMAN LANJUT EVENT. Oleh : Andri Heryandi, M.T.

Fajar Yusran Zebua DASAR ANIMASI

Membuat User Interface dengan Swing. Program yang dibuat sebelumnya selalu berbasis console User lebih senang berinteraksi dengan

Materi 3 Pemrograman Visual

Creating Graphical User Interfaces [1] with Java By: De Rosal Ignatius Moses Setiadi

SISTEM INFORMASI PENJUALAN OBAT BERBASIS JAVA. Disusun oleh : Rozy Putra Pratama

Array Sebagai Parameter Method

BAB IX MEMBUAT FORM 9.1 Membuat Form Secara Konvensional

GUI Event Handling. 5. Mendiskusikan keuntungan-keuntungan dari menggunakan inner dan anonymous class

Materi 1 Pemrograman Visual

SISTEM RANCANAGAN APLIKASI PEMBAYARAN SPP. Di Susun Oleh: Nama : Ikhlas Adi Putra Nim : Kelas : 21/Pagi

Mukhlidi Muskhir Modul 2

Membangun GUI (dengan AWT & Swing) OOP Java

MEMBUAT APLIKASI ZODIAK SEDERHANA DENGAN JAVA BY : INDRA

Pemrograman dengan Java

INSTRUKSI PENCABANGAN

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

subclass class manapun private default protected public package yang sama

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Lab Bahasa Pemrograman 2

- Setiap pola yang menggambarkan permasalahan yang terjadi secara berulang, serta

BAB VI ARRAY Mendeklarasikan Variabel Array int[ ] bilangan; int bilangan[ ]; Mendefinisikan Array Bilangan = new int[5]; Latihan 21. ArrSatu.

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

PRAKTIKUM I Class dan Obyek

Modul 7 Praktikum Pemrograman Visual

Pemrograman Lanjut Review Class dan Object PTIIK

Didalam menampilkan peta yang sudah kita buat, kita akan menggunakan Slick2D sebagai sebuah frameworknya.

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

A. TEORI ARRAY 1 DIMENSI

PENGENALAN JAVA GUI PROGRAMMING

PERTEMUAN 3 OBJEK DAN CLASS

Tugas Java. : Evannata Dwiyan. Nim : : Sistem Informasi. Kelas : 21. : Informasi Restoran

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

Method / Fungsi / Sub Program

PEWARISAN D E W I S A R T I K A, M. K O M

GUI Event Handling. minggu 13. Wednesday, 16 May 12

BAB II DASAR TEORI 2.1. Dasar Pemrograman GTGE

5/24/2012. Pemograman Berorientasi Objek. Pembahasan. Abstract Windowing Toolkit & Swing. Pembahasan

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

LISTING PROGRAM. Program animasi Frame by Frame dalam bahasa pemrograman Java

Membuat Kalkulator dengan Java

Transkripsi:

BAB 3 MODEL GARIS Anda telah mempelajari bagaimana membuat objek geometri sederhana dan bentuk-bentuk kompleks lainnya. Dalam modul berikutnya akan dibahas tentang pengaturan tipe-tipe garis pada grafik. Materi yang dipelajari meliputi pemilihan model garis/outline (stroking) yang diterapkan dalam pembuatan objek geometri. 1.1 TIPE-TIPE GARIS Java 2D menyertakan interface Stroke untuk menampilkan tipe-tipe garis. Implementasi interface stroke yang nyata adalah dengan menggunakan kelas BasicStroke. Kelas BasicStroke menyediakan pengaturan untuk lebar, bentuk akhir garis, bentuk gabungan antar garis, dan garis putus-putus. Konstruktor dari BasicStroke adalah sebagai berikut: BasicStroke() BasicStroke(float width) BasicStroke(float width, int cap, int join) BasicStroke(float width, int cap, int join, float miterlimit) BasicStroke(float width, int cap, int join, float miterlimit, float[] dash, float dashphase) Parameter width mendefinisikan lebar dari garis yang digambar. Parameter cap mengatur bentuk akhir garis dan dapat menggunakan nilai: CAP_BUTT CAP_ROUND CAP_SQUARE Parameter join mendefinisikan bentuk penggabungan dua garis dengan nilai: JOIN_BEVEL JOIN_MITER JOIN_ROUND miterlimit mengatur batasan untuk untuk JOIN_MITER untuk menanggulangi bentuk gabungan dua garis yang sangat panjang ketika sudut antara kedua garis kecil. Array dash mendefinisikan pola garis putus-putus dengan mengatur panjang segment ON/OF. Dasphase mendefinisikan bentuk titik awal dalam pola garis putus-putus.

Graphics2D mempunyai method berikut untuk menentukan model garis sekarang: void setstroke(stroke s) Listing berikut mempertunjukkan efek grafik yang menggambar garis dengan tipe garis (stroke) yang berbeda-beda. Listing 3.1. TestStroke1.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.font.*; import java.awt.geom.*; public class TestStroke1 extends JApplet { public static void main(string s[]) { JFrame frame = new JFrame(); frame.settitle("test Stroke-1"); frame.setdefaultcloseoperation(jframe.exit_on_close); JApplet applet = new TestStroke1(); 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;

//menggambar sebuah garis dengan ketebalan 3 (piksel) BasicStroke bsgaristebal = new BasicStroke(3.0f); g2.setstroke(bsgaristebal); g2.drawline(30,50,30,250); //array untuk mendiskkripsikan pola garis putus-putus. float[] dashpattern; //offset dimana pola garis putus-putus harus mulai. float dashphase = 0.0f; //pola garis putus-putus. dashpattern = new float[10]; dashpattern[0] = 4.0f; dashpattern[1] = 5.0f; dashpattern[2] = 8.0f; dashpattern[3] = 5.0f; dashpattern[4] = 12.0f; dashpattern[5] = 5.0f; dashpattern[6] = 16.0f; dashpattern[7] = 5.0f; dashpattern[8] = 20.0f; dashpattern[9] = 5.0f; //pendefinisian dari BasicStroke yang akan digunakan. BasicStroke bsberpola = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL,2.0f, dashpattern, dashphase); g2.setstroke(bsberpola); //Menggambar sebuah garis dengan pola putus-putus. g2.drawline(60,50,60,250); //sebuah pola putus-putus yang sederhana dengan panjang garis(dash) 20 dan //lebar jarak 10. dashpattern = new float[2]; dashpattern[0] = 20; dashpattern[1] = 10;

//Pendefinisian BasicStroke yang akan digunakan. BasicStroke bsdashed = new BasicStroke(3.0f,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL,2.0f, dashpattern,dashphase); g2.setstroke(bsdashed); //menggambar sebuah garis (vertikal) dengan pola yang telah //didefinisikan sebelumnya. g2.drawline(120,50,120,250); //menggambar sebuah garis (diagonal) dengan pola yang //telah didefinisikan sebelumnya. g2.drawline(150,50,350,250); //Menggunakan pola garis putus-putus yang sama seperti sebelumnya, //tetapi dengan offset 10 dashphase = 10.0f; //Pendefinisain BasicStroke yang akan digunakan. BasicStroke bsdashedshifted = new BasicStroke(3.0f,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL,2.0f, dashpattern,dashphase); //menggambar sebuah garis (vertikal) dengan pola putus-putus yang telah //didefinisikan sebelumnya. g2.setstroke(bsdashedshifted); g2.drawline(90,50,90,250); Latihan: Ketiklah kode program diatas. Kemudian compile dan jalankan. Apa yang dihasilkan oleh program tersebut? Jelaskan! Jawab:

Berikut adalah contoh penerapan kelas BasicStroke dalam sebuah program yang digunakan untuk menggambar objek geometri sederhana. Listing 3.2. 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; //menggambar sebuah garis dengan ketebalan 3 (piksel) BasicStroke bsgaristebal = new BasicStroke(3.0f); g2.setstroke(bsgaristebal); g2.drawline(30,50,30,250);

//array untuk mendiskkripsikan pola garis putus-putus. float[] dashpattern; //offset dimana pola garis putus-putus harus mulai. float dashphase = 0.0f; //pola garis putus-putus. dashpattern = new float[10]; dashpattern[0] = 4.0f; dashpattern[1] = 5.0f; dashpattern[2] = 8.0f; dashpattern[3] = 5.0f; dashpattern[4] = 12.0f; dashpattern[5] = 5.0f; dashpattern[6] = 16.0f; dashpattern[7] = 5.0f; dashpattern[8] = 20.0f; dashpattern[9] = 5.0f; //pendefinisian dari BasicStroke yang akan digunakan. BasicStroke bsberpola = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL,2.0f, dashpattern, dashphase); g2.setstroke(bsberpola); //Menggambar sebuah garis dengan pola putus-putus yang telah didefinisikan //sebelumnya g2.drawline(100,100,200,200); //sebuah pola putus-putus yang sederhana dengan panjang garis(dash) 20 dan //lebar jarak antar garis 10. dashpattern = new float[2]; dashpattern[0] = 20; dashpattern[1] = 10; //pendefinisian BasicStroke yang akan digunakan. BasicStroke bsgarisputusputus = new BasicStroke(3.0f,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL,2.0f, dashpattern,dashphase); g2.setstroke(bsgarisputusputus); //menggambar persegipanjang dengan pola garis putus-putus yang telah //didefinisikan sebelumnya. g2.draw(new Rectangle2D.Double(50, 25, 100, 50));

//menggambar elips dengan pola garis putus-putus //sama seperti sebelumnya g2.draw(new Ellipse2D.Double(200,50,100,50)); //menggambar busur dengan pola garis putus-putus //sama seperti sebelumnya. g2.draw(new Arc2D.Double(200, 125, 100, 50, 90, 135, Arc2D.OPEN)); //gambar kurva kuadrat dengan pola garis putus-putus //sama seperti sebelumnya. g2.draw(new QuadCurve2D.Double(100,250,175,175,300,250)); //gambar kurva kubik g2.draw(new CubicCurve2D.Double(50,300,150, 200,200,400,300,300)); Latihan: Ketiklah kode program diatas. Kemudian compile dan jalankan. Apa yang dihasilkan oleh program tersebut? Jelaskan! Jawab: Listing 3.3 mempertunjukkan efek grafik yang menggambar dengan pengaturan tipe garis (stroke) yang berbeda-beda. Listing 3.3 TestStroke.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; public class TestStroke extends JApplet { public static void main(string s[]) { JFrame frame = new JFrame(); frame.settitle("test Strokes"); frame.setdefaultcloseoperation(jframe.exit_on_close);

JApplet applet = new TestStroke(); applet.init(); frame.getcontentpane().add(applet); frame.pack(); frame.setvisible(true); public void init() { JPanel panel = new StrokePanel(); getcontentpane().add(panel); class StrokePanel extends JPanel { public StrokePanel() { setpreferredsize(new Dimension(700, 400)); setbackground(color.white); public void paintcomponent(graphics g) { super.paintcomponent(g); Graphics2D g2 = (Graphics2D)g; GeneralPath path = new GeneralPath(GeneralPath.WIND_EVEN_ODD); //menggambar objek bebas path.moveto(0,120); path.lineto(80,0); path.lineto(160,120); //mengatur bentuk gabungan dua garis dengan: //tebal = 20 //bentuk akhir garis = CAP_BUTT //bentuk gabungan = JOIN_BEVEL Stroke stroke = new BasicStroke(20, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); g2.setstroke(stroke); g2.translate(50,50); g2.draw(path);

g2.drawstring("join_bevel",100,0); g2.drawstring("cap_butt", 40, 120); //mengatur bentuk gabungan dua garis dengan: //tebal = 20 //bentuk akhir garis = CAP_ROUND //bentuk gabungan = JOIN_MITTER stroke = new BasicStroke(20, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER); g2.setstroke(stroke); g2.translate(200,0); g2.draw(path); g2.drawstring("join_miter",100,0); g2.drawstring("cap_round", 40, 120); //mengatur bentuk gabungan dua garis dengan: //tebal = 20 //bentuk akhir garis = CAP_SQUARE //bentuk gabungan = JOIN_ROUND stroke = new BasicStroke(20, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND); g2.setstroke(stroke); g2.translate(200,0); g2.draw(path); g2.drawstring("join_round",100,0); g2.drawstring("cap_square", 40, 120); //menggambar garis putus-putus //pola garis float[] dasharray = {60,20,20,40; //bentuk awal float dashphase = 0; //mengatur model garis dengan: //mengatur bentuk gabungan dua garis dengan: //tebal = 10 //bentuk akhir garis = CAP_BUTT //bentuk gabungan = JOIN_BEVEL

stroke = new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0, dasharray, dashphase); g2.setstroke(stroke); g2.translate(-400,200); g2.drawline(100, 50, 550, 50); g2.drawstring("dash=60 20 20 40", 250, 10); g2.drawstring("phase=0", 0, 50); dashphase = 20; //mengatur model garis dengan: //mengatur bentuk gabungan dua garis dengan: //tebal = 10 //bentuk akhir garis = CAP_BUTT //bentuk gabungan = JOIN_BEVEL stroke = new BasicStroke(10, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0, dasharray, dashphase); g2.setstroke(stroke); g2.translate(0,50); g2.drawline(100, 50, 550, 50); g2.drawstring("phase=20", 0, 50); Latihan: Ketiklah kode program diatas. Kemudian compile dan jalankan. Apa yang dihasilkan oleh program tersebut? Jelaskan! Jawab:

Tugas Projek Tahap II Lengkapilah program yang sudah Anda buat sebelumnya dengan menu yang digunakan untuk pengaturan garis pada objek geometri yang terpilih untuk ditampilkan. Lihat screenshot berikut: Gambar 3.1 Menu (objek) persegipanjang dan (tipe garis) putus-putus terpilih Gambar 3.1 Menu (objek) elips dan (tipe garis) tebal terpilih

Keterangan: 1. Tampilan di atas hanya merupakan contoh saja. 2. Dalam tahap II (kedua) program ditambah kemampuan untuk menentukan tipe garis (stroke) yang digunakan untuk menampilkan objek geometri saja. 3. Silahkan membuat program menurut kreativitas masing-masing, misalnya: Untuk membuat menu tipe garis yang akan ditampilkan bisa diganti menggunakan radiobutton. Ditambah TextField yang digunakan untuk menentukan ketebalan garis. 4. Dan lain-lain. 5. Penambahan menu tipe garis diharapkan dapat diselesaikan dalam satu minggu, supaya tidak terbebani pada tahapan projek berikutnya. 6. Happy codding! --- End of File ---