[ java ] in KIDS 글 쓴 이(By): hell (나누구야) 날 짜 (Date): 1997년11월17일(월) 12시13분46초 ROK 제 목(Title): 더블 버퍼링.... 프로젝트 II를 하다보면 다른 분들은 어땠는지 모르지만 저 같은 경우 깜박거림이 심해서 이를 없애려고 이상한 방법(?) 을 썼는데... 위에 '더블버퍼링' 이라는 기법을 쓴 분이 계시더군요. 이에 대한 내용이 있길레 옮겨 옵니다. ---------------------------------------------------------------------------- [강좌] Double Buffering의 이해 안녕하세요 BBS 운영자 강신동 입니다. JDK 1.1.3 한글윈95 그래픽을 화면에 그냥 그리면 깜빡거림이 매우 심하다. paint()를 호출하기 전에 update()를 호출하기 때문인데 update()내부에서는 화면의 Image를 전체로 배경색으로 칠한 후 다시 그리기 때문에 하나의 Graphics method를 사용할 때 마다 깜빡거림이 생기게된다. 이러한 깜빡임을 없애려면 그림그리기를 완전히 끝마치기 전에는 메모리상의 가상적인 Image에 그림을 그리고 다 그리고 난 후에는 그 메모리상의 가상 Image의 데이터를 실제 모니터에 사용하는 메모리영역으로 재빨리 복사하게 만든다. 이러한 기법을 Double Buffering 이라고 한다. import java.awt.*; import java.applet.Applet; public class db extends Applet{ Image memoryimage; // 메모리상의 Image를 만든다. Graphics memorygraphics; // 메모리 Image에 그림을 그리기위한 Graphics public void init() { memoryimage = createImage(100, 100); // java.awt.Component // public Image createImage(int width,int height) memorygraphics = memoryimage.getGraphics(); // Image에 그림을 그리려면 반드시 그 이미지로 부터 Graphics를 얻어야 한다. } public void paint (Graphics g) { memorygraphics.setColor(Color.red); memorygraphics.fillRect(0, 0, 100, 100); // 메모리 Image에 그림을 그리려면 메로리 Image로 부터 얻은 Graphics를 이용한다. g.drawImage(memoryimage, 10, 10, this); // 시스템이 사용하는 비디오램에 메모리 Image를 10,10 좌표에 한꺼번에 // 그대로 복사한다. } } ------------------------------------------------------------------------------ |