Membuat Tipe-Tipe Garis di Java 2D

Monday, May 09, 2016
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 :

Share this :

Previous
Next Post »
1 Komentar
avatar

Perkenalkan, saya dari tim kumpulbagi. Saya ingin tau, apakah kiranya anda berencana untuk mengoleksi files menggunakan hosting yang baru?
Jika ya, silahkan kunjungi website ini www.kbagi.com untuk info selengkapnya.

Di sana anda bisa dengan bebas share dan mendowload foto-foto keluarga dan trip, music, video, filem dll dalam jumlah dan waktu yang tidak terbatas, setelah registrasi terlebih dahulu. Gratis :)

Balas

Penulisan markup di komentar
  • Silakan tinggalkan komentar sesuai topik. Komentar yang menyertakan link aktif, iklan, atau sejenisnya akan dihapus.
  • Untuk menyisipkan kode gunakan <i rel="code"> kode yang akan disisipkan </i>
  • Untuk menyisipkan kode panjang gunakan <i rel="pre"> kode yang akan disisipkan </i>
  • Untuk menyisipkan quote gunakan <i rel="quote"> catatan anda </i>
  • Untuk menyisipkan gambar gunakan <i rel="image"> URL gambar </i>
  • Untuk menyisipkan video gunakan [iframe] URL embed video [/iframe]
  • Kemudian parse kode tersebut pada kotak di bawah ini
  • © 2015 Simple SEO ✔

Ads