Java Programming‎ > ‎Graphics 2D‎ > ‎

Menggambar Polyline di Java 2D

posted Jul 29, 2011, 6:09 PM by Editor KursusInternet   [ updated Jul 29, 2011, 7:33 PM ]
Polyline adalah bentuk / shape yang terdiri dari beberapa line yang tersambung satu sama lainnya. Berbeda dengan polygon, ujung polyline biasanya terbuka. Gambar berikut menunjukkan 2 contoh polyline.


Gambar 1. Dua bentuk polyline sederhana

Untuk menggambar polyline di Java, tidak ada class khusus untuk bentuk tersebut seperti halnya polygon. Tetapi kita dapat menggambarnya dengan menggunakan class Line2D atau GeneralPath. Kedua class tersebut ada pada package java.awt.geom.

Pada kesempatan kali ini, kita akan menggunakan GeneralPath. Class ini merupakan turunan dari class Path2D.Float, dimana terdapat dua method yang sangat berguna untuk menggambar berbagai bentuk polyline, yaitu :
  • moveTo(x, y) : digunakan untuk memindahkan titik ke koordinat (x, y) tanpa menggambar. 
  • lineTo(x, y) : digunakan untuk memindahkan titik ke koordinat (x, y) dengan menggambar suatu garis penghubung.

Catatan Penting


Untuk memulai menggambar dengan GeneralPath, maka kita pertama kali harus memanggil method moveTo. Atau dengan kata lain, harus ada titik acuan awal.



Gambar 2. Contoh Polyline yang akan digambar

Untuk menggambar bentuk pada gambar 2, maka contoh potongan codenya adalah sebagai berikut.

  public void gambar(Graphics g)
  {
    Graphics2D g2d = (Graphics2Dg;
    double x[] {83.15661183.15661183.15661
        227.44233227.44233278.8709
        278.8709313.15661313.15661
        356.01376};
    double y[] {315.29111315.29111192.43397
        192.43397315.29111315.29111
        99.57683299.576832315.29111
        315.29111};
    GeneralPath p = new GeneralPath();

    p.moveTo(x[0], y[0])// Titik Acuan
    
    //Menghubungkan titik lain dengan garis
    for (int i = 1; i < x.length; i++) {
      p.lineTo(x[i], y[i]);      
    }
    g2d.draw(p);
  }

Pada potongan code tersebut, x dan y adalah array yang mewakili kumpulan titik koordinat masing-masing untuk x dan y. Sebelum menggambar, kita ambil titik acuan awal dengan method moveTo ke titik (x[0], y[0]). Setelah itu kita menghubungkan seluruh titik sisa dengan lineTo.

Gambar hasil eksekusi dari code lengkap adalah sebagai berikut.



GambarPolyline.java

package com.kursusinternet.graphics;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class GambarPolyline extends JPanel {
  private static final long serialVersionUID = 1L;

  public void gambar(Graphics g)
  {
    Graphics2D g2d = (Graphics2Dg;
    double x[] {83.15661183.15661183.15661
        227.44233227.44233278.8709
        278.8709313.15661313.15661
        356.01376};
    double y[] {315.29111315.29111192.43397
        192.43397315.29111315.29111
        99.57683299.576832315.29111
        315.29111};
    GeneralPath p = new GeneralPath();

    p.moveTo(x[0], y[0])// Titik Acuan
    
    //Menghubungkan titik lain dengan garis
    for (int i = 1; i < x.length; i++) {
      p.lineTo(x[i], y[i]);      
    }
    g2d.draw(p);
  }

  public void paintComponent(Graphics g) {
    clear(g);
    gambar(g);
  }

  protected void clear(Graphics g) {
    super.paintComponent(g);
  }

  public static void main(String[] args) {
    GambarPolyline panelGambar = new GambarPolyline();
    JFrame frameGambar = new JFrame("Gambar Polyline");
    frameGambar.setSize(400400);
    panelGambar.setBackground(Color.white);
    frameGambar.setContentPane(panelGambar);
    frameGambar.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frameGambar.setVisible(true);
  }
}

~~ Selesai ~~

Comments