제임스딘딘의
Tech & Life

개발자의 기록 노트/Java

[Java/SWT] 그래픽스 컨텍스트 (Graphics Context)

제임스-딘딘 2012. 12. 7. 21:59

1. GC(Graphical Context) 클래스는 SWT의 그래픽엔진의 코어를 형성한다.

2. GC는 도형, 텍스트, 이미지를 그리는데 필요한 모든 메소드를 제공한다.

3. 컨트롤, 디바이스 또한 다른 이미지 위에 그릴수 있다.


일반적으로 그리기 라이프사이클은 다음과 같이 구성된다.

1. 그리려고 하는 대상의 GC를 생성하거나 얻음.

2. 그린다.

3. GC를 생성했다면, 소멸시킨다.


코드로 보면 다음과 같다.

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


일반적으로 paint handler에 그리기 코드를 넣는다.

final Canvas canvas = new Canvas(shell, SWT.NONE);
canvas.addPaintListener(new PaintListener() {
	public void paintControl(PaintEvent e) {
		GC gc = new GC(canvas);
		gc.drawFocus(...);
		gc.drawText(...);
		gc.dispose();
	}
});



GC 생성 피하기

GC를 새로 생성하면 dispose() 를 해야한다.

새로운 GC를 생성하지 않고 PaintEvent객체의 내장 gc를 사용하면 이를 회피할 수 있다.

코드는 아래와 같다.


final Canvas canvas = new Canvas(shell, SWT.NONE);
canvas.addPaintListener(new PaintListener() {
	public void paintControl(PaintEvent e) {
		e.gc.drawFocus(...);
		e.gc.drawText(...);
	}
});