Graphics : GC « SWT 2D Graphics « Java Tutorial






  1. The GC class (short for graphical context) forms the core of SWT's graphics engine.
  2. GC offers all the methods required for drawing shapes, text, and images.
  3. You can draw on Controls, Devices, or other Images.

Generally, drawing lifecycles consists of the following:

  1. Creating or obtaining a GC to draw on the desired target
  2. Drawing
  3. If you created the GC, disposing the GC

In code, the drawing lifecycle looks like this:

GC gc = new GC(display);
gc.drawRectangle(...);
gc.drawText(...);
gc.drawImage(...);
gc.dispose();

You generally put drawing code in a paint handler, like this:

Graphics
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class GCCreateFrom {
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Canvas Example");
    shell.setLayout(new FillLayout());

    final Canvas canvas = new Canvas(shell, SWT.NONE);

    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        GC gc = new GC(canvas);
        gc.setForeground(e.display.getSystemColor(SWT.COLOR_RED));
        gc.drawFocus(5, 5, 200, 10);
        gc.drawText("You can draw text directly on a canvas", 60, 60);
        gc.dispose();
      }
    });

    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
}








18.1.GC
18.1.1.GraphicsGraphics
18.1.2.Avoid creating a GCAvoid creating a GC