Java Programming‎ > ‎Graphics 2D‎ > ‎

Menggabungkan Bentuk dengan Area

posted Oct 4, 2011, 9:22 AM by Editor KursusInternet   [ updated Oct 4, 2011, 9:46 AM ]

Pendahuluan

Dari artikel-artikel sebelumnya dari bagian Graphics2D ini, kita telah banyak diberi contoh penggambaran bentuk / shape secara individual.

Namun, dalam prakteknya kita lebih berkepentingan membuat bentuk yang lebih kompleks dari beberapa bentuk, salah satunya dengan menggabung (union).

Sebagai contoh, misalkan kita memiliki 2 bentuk segitiga yang kemudian digabung menjadi sebuah bentuk polygon seperti tampak pada gambar berikut.


Untuk melakukan ini, maka yang kita perlukan adalah "mengkonversi" tiap shape menjadi instance dari Area dan kemudian menggunakan method add(), menambahkan satu area ke area lainnya. 

Contoh potongan lengkap programnya kira-kira sebagai berikut di bawah ini.

Contoh Kode - Menggabungkan Bentuk

package com.kursusinternet.graphics;

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

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

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

  public void gambar(Graphics g)
  {
    Graphics2D g2d = (Graphics2Dg;
    double x1[] {200300250};
    double y1[] {100150300};
    double x2[] {100300250};
    double y2[] {300100200};    
    
    
    GeneralPath p1 = new GeneralPath();
    p1.moveTo(x1[0], y1[0])// Titik Acuan
    
    //Segitiga 1
    for (int i = 1; i < x1.length; i++) {
      p1.lineTo(x1[i], y1[i]);      
    }
    p1.lineTo(x1[0], y1[0]);  
    
    GeneralPath p2 = new GeneralPath();
    p2.moveTo(x2[0], y2[0])// Titik Acuan
    
    //Segitiga 2
    for (int i = 1; i < x1.length; i++) {
      p2.lineTo(x2[i], y2[i]);      
    }
    p2.lineTo(x2[0], y2[0]);
    
    Area a1 = new Area(p1)// Area dari segitiga 1
    Area a2 = new Area(p2)// Area dari segitiga 2
    a1.add(a2)// Menggabungkan area 2 ke area 1

    g2d.setColor(Color.cyan);
    g2d.fill(a1);
  }

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

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

  public static void main(String[] args) {
    GabungGambar panelGambar = new GabungGambar();
    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);
  }
}

Hasil Eksekusi



Comments