posted Nov 21, 2011 9:24 PM by Editor KursusInternet
[
updated Dec 31, 2011 4:16 AM
]
Stroke adalah objek pada Java2D yang berfungsi sebagai "mata pensil / pena" yang digunakan untuk menggambar. Stroke memiliki berbagai macam style / bentuk yang dapat kita pilih sehingga menentukan komposisi garis bentuk akhir dari gambar kita.
Pengaturan stroke pada Java bisa dilakukan untuk 2 atribut, yaitu : Class BasicStrokePada class BasicStroke kita menentukan ketebalan dan atribut lainnya dengan beberapa constructor, diantaranya adalah : - BasicStroke() : Constructs a new BasicStroke with defaults for all attributes.
- BasicStroke(float width) : menghasilkan objek BasicStroke dengan ketebalan width.
- BasicStroke(float width, int cap, int join) : menghasilkan objek BasicStroke dengan spesifikasi atribut width, cap dan join (keterangan menyusul di bawah).
- BasicStroke(float width, int cap, int join, float miterlimit) : menghasilkan objek BasicStroke dengan spesifikasi atribut width, cap , join, dan miterlimit (keterangan menyusul di bawah).
- BasicStroke(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase) : menghasilkan objek BasicStroke dengan spesifikasi atribut width, cap , join, dan miterlimit (keterangan menyusul di bawah).
Terlihat di atas ada beberapa atribut lain selain width. Keterangan untuk atribut-atribut tersebut adalah sebagai berikut : - cap : bentuk dekorasi pada ujung titik stroke.
- join : adalah bentuk yang terjadi ketika dua titik ujung garis bertemu.
- miterlimit : batas untuk melakukan pemotongan miter join.
- dash : adalah array dari nilai numerik float yang menentukan pola isi dan spasi dari garis / stroke.
- dash_phase : offset atau jarak dimulainya penggunaan dash.
Contoh Penggunaan
Untuk lebih jelas penggunaannya, maka berikut ini adalah code Java yang menggambar beberapa lingkaran dan segitiga dengan berbagai bentuk stroke.
PenggunaanStroke.javapackage com.kursusinternet.graphics;
import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Polygon; import java.awt.RenderingHints; import java.awt.geom.Ellipse2D;
import javax.swing.JFrame; import javax.swing.JPanel;
public class PenggunaanStroke extends JPanel { private static final long serialVersionUID = 1L;
public void gambar(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); BasicStroke bs1 = new BasicStroke(5); BasicStroke bs2 = new BasicStroke( 8, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND ); BasicStroke bs3 = new BasicStroke( 8, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL ); BasicStroke bs4 = new BasicStroke( 5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 2, new float[] {10f, 10f}, 1.0f ); BasicStroke bs5 = new BasicStroke( 5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 2, new float[] {10f, 10f}, 10.0f );
int xstart = 10; int width = 50; g2d.setPaint(Color.BLUE); g2d.setStroke(bs1); g2d.draw(new Ellipse2D.Double(xstart, 10, 100, 100));
int x[] = {xstart, xstart+width, xstart+(2*width)}; int y[] = {250, 150, 250}; g2d.setPaint(Color.BLUE); g2d.setStroke(bs1); g2d.draw(new Polygon(x,y,x.length)); xstart = 130; g2d.setPaint(Color.RED); g2d.setStroke(bs2); g2d.draw(new Ellipse2D.Double(130, 10, 100, 100));
x = new int[] {xstart, xstart+width, xstart+(2*width)}; g2d.draw(new Polygon(x,y,x.length));
xstart = 250; g2d.setPaint(Color.GREEN.darker()); g2d.setStroke(bs3); g2d.draw(new Ellipse2D.Double(xstart, 10, 100, 100));
x = new int[] {xstart, xstart+width, xstart+(2*width)}; g2d.draw(new Polygon(x,y,x.length)); xstart = 370; g2d.setPaint(Color.MAGENTA); g2d.setStroke(bs4); g2d.draw(new Ellipse2D.Double(xstart, 10, 100, 100));
x = new int[] {xstart, xstart+width, xstart+(2*width)}; g2d.draw(new Polygon(x,y,x.length));
xstart = 490; g2d.setPaint(Color.ORANGE); g2d.setStroke(bs5); g2d.draw(new Ellipse2D.Double(490, 10, 100, 100));
x = new int[] {xstart, xstart+width, xstart+(2*width)}; g2d.draw(new Polygon(x,y,x.length)); }
public void paintComponent(Graphics g) { clear(g); gambar(g); }
protected void clear(Graphics g) { super.paintComponent(g); }
public static void main(String[] args) { PenggunaanStroke panelGambar = new PenggunaanStroke(); JFrame frameGambar = new JFrame("Penggunaan Stroke"); frameGambar.setSize(650, 300); panelGambar.setBackground(Color.white); frameGambar.setContentPane(panelGambar); frameGambar.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frameGambar.setVisible(true); } } |
Hasil Eksekusi
Screenshot berikut adalah hasil eksekusi dari kode Java di atas.
Dan perhatikan beberapa highlight perbedaan yang terjadi pada berbagai definisi bentuk stroke pada gambar berikut.
Sumber Referensi
|
|