08. Menggambar dengan Graphics pada SWT

posted Nov 6, 2011, 1:22 AM by Editor KursusInternet   [ updated Nov 6, 2011, 2:10 AM ]

Pendahuluan

Selain penggunaan style standar seperti pewarnaan dan memasukkan gambar, pada suatu titik kita ingin penggambaran yang lebih maju pada beberapa widget kita. Contoh misalkan penggambaran peta dengan garis batas dan titik-titik kota.

Untuk melakukan ini kita tidak bisa menggunakan class Graphics dan Graphics2D yang ada pada Swing/AWT - seperti yang ditunjukkan pada seri artikel Graphics 2D di Java. Ini karena SWT memiliki konteks yang sama sekali berbeda dari Swing / AWT.

Untuk melakukan hal yang kurang lebih sama di SWT, kita akan menggunakan suatu class graphic context yaitu GC

Graphic Context GC

GC seperti halnya Graphics2D tidak bisa diinisialisasi secara langsung / independen, tetapi harus melalui widget yang mengimplementasikan interface Drawable, diantaranya adalah widget Browser, Button, Canvas, Label, dan lain-lain.

Syntax untuk inisialisasi objek GC adalah dengan menggunakan dua variasi constructor berikut :

        GC(Drawable drawable)
        GC(Drawable drawable, int style)

Method-method untuk Menggambar pada GC

Berikut adalah beberapa method yang dapat digunakan untuk menggambar dan mengisi warna pada berbagai bentuk melalui objek GC :
  • drawPoint(int x, int y) : digunakan untuk menggambar satu titik pixel pada posisi koordinat (x, y).
  • drawLine(int x1, int y1, int x2, int y2) : digunakan untuk menggambar garis dari koordinat (x1, y1) ke koordinat (x2, y2).
  • drawRectangle(int x, int y, int width, int height) : digunakan untuk menggambar kotak / persegi panjang dimulai dari koordinat sudut kiri atas pada (x, y) dengan lebar width dan tinggi height.
  • fillRectangle(int x, int y, int width, int height) : digunakan untuk mengisi warna pada kotak / persegi panjang dimulai dari koordinat sudut kiri atas pada (xy) dengan lebar width dan tinggi height.
  • setLineStyle(int lineStyle) : mendefinisikan gaya / style penggambaran garis bentuk. Opsi lineStyle yang dapat digunakan adalah SWT.LINE_SOLID (garis padat), SWT.LINE_DASH (garis putus-putus), SWT.LINE_DOT (garis titik putus-putus), SWT.LINE_DASHDOT (campuran titik garis putus-putus) or SWT.LINE_DASHDOTDOT (campuran titik dan garis putus).
  • setForeground(Color color) : mendefinisikan warna untuk menggambar garis bentuk.
  • setBackground(Color color) : mendefinisikan warna untuk mengisi bentuk. 
  • dan lain-lain.
Catatan Penting : Agar dapat digambar, maka shell yang menjadi dasar dari widget harus dalam keadaaan open terlebih dahulu.

Contoh Penggunaan

ContohGraphics.java

package com.kursusinternet.swt;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class ContohGraphics {
  Display display;
  Shell shell;
 
  public void tampil()
  {
    display = new Display();
    shell = new Shell(display);
    
    Label labelGC = new Label(shell, SWT.LEFT);
    labelGC.setBackground(new Color(display, 255255255));
    labelGC.setLocation(0,0);
    labelGC.setSize(400,400);
    
    shell.setText("Contoh Graphics !");
    shell.setSize(500500);
    shell.open();
    
    GC objGC = new GC(labelGC);
    
    int red = 255;
    for(int i=0; i <= 350; i+=10)
    {
      red -= 4;
      objGC.setForeground(new Color(display, red, 0200));
      objGC.drawLine(0, i, i, 350);
      objGC.drawLine(i, 0350, i);
    }
    objGC.setLineStyle(SWT.LINE_DOT);
    int blue = 255;
    for(int lebar = 10; lebar < 150; lebar+=5)
    {
      objGC.setForeground(new Color(display, 0200, blue));
      objGC.drawRectangle(175 (lebar / 2)175 (lebar / 2), lebar, lebar);
      blue -= 4;
    }
    objGC.dispose()
;    

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();     
  }
  
  public static void main(String[] args) {
    new ContohGraphics().tampil();
  }
}

Hasil Eksekusi


Bacaan Lebih Lanjut

~~ Selesai ~~
Comments