Membuat Tipe-Tipe Garis di Java 2D

Dalam grafika komputer tidak pernah lepas dari geometri. Yang meliputi pemodelan garis-garis. Dengan garis maka dapat terbentuk sebuah objek geometri.

Di Java 2D tersedia interface stroke untuk menampilkan garis-garis. Implementasi interface diantaranya menggunakan BasicStroke. Kelas BasicStroke menyediakan pengaturan untuk bentuk garis, lebar, gabungan antar garis dan garis putus-putus.

Berikut adalah contoh implementasi BasicStroke.

strokePanel.java
/**
 *
 * @author Wim Sonevel
 */
import java.awt.*;
import javax.swing.JPanel;
public class strokePanel extends JPanel{

    public strokePanel(){
        setPreferredSize(new Dimension(500, 400));
        setBackground(Color.WHITE);
    }

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2=(Graphics2D)g;
        //menggambar sebuah garis dengan ketebalan 3 pixel
        BasicStroke bsGarisTebal=new BasicStroke(3.0f);
        g2.setStroke(bsGarisTebal);
        g2.drawLine(30, 50, 30, 250);

        //array untuk mendeskripsikan garis putus - putus
        float[]dashPattern;

        //offset dimana garis putus-putus harus dimulai
        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 Basic Stroke 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;
        //pendefinisian 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);
    }
} 

Kemudian kelas panel diatas dipanggil di kelas TesStroke.java
/**
 *
 * @author Wim Sonevel
 */
import javax.swing.*;
public class TesStroke extends JApplet{

    @Override
    public void init(){
        JPanel panel=new strokePanel();
        getContentPane().add(panel);
    }

    public static void main(String[]args){
        JFrame frame=new JFrame();
        frame.setTitle("Garis");
        frame.setVisible(true);
        //frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JApplet applet=new TesStroke();
        applet.init();
        frame.getContentPane().add(applet);
        frame.pack();

    }
}


Outputnya :

Post a Comment

Previous Post Next Post