java

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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 좌표에 한꺼번에 
// 그대로 복사한다.

  }
}


------------------------------------------------------------------------------
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.