2008년 6월 30일 월요일

java Double Buffering

JAVA어플리케이션 그래픽

// Double Buffering 이미지를 메모리(버퍼 또는 가상화면)에 먼저
// 그리고 화면에 나중에 그리는 기법입니다.
// 화면은 캡쳐한거라 좀 이상해 보이지만 직접 실행하면 부드럽게 이동합니다.
import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Date;

public class Applet1 extends Applet implements Runnable {

Thread runner;
Image img; //버퍼 또는 가상화면
Graphics gc;
int px=10;

boolean stop = false;

public void start() {
img = createImage(300 , 300);
gc = img.getGraphics();

runner = new Thread(this);
runner.start();
}

public void stop() {
if(runner != null) {
stop = true;
runner = null;
}
}

public void run() {
while(!stop) {
px++;
if(px>300) px=10;

//게임의 배경이라고 생각하시면 됩니다. 지우기
gc.setColor(Color.WHITE);
gc.fillRect(0, 0, 300, 300);
// 게임의 비행기라고 생각하시면 됩니다. 그리기
gc.setColor(Color.black);
gc.drawRect(px, 10, 30, 30);

repaint();
try {
Thread.sleep(10); //지연 또는 화면을 갱신
} catch(Exception ex) {
System.out.println("Exception:" + ex.toString());
}
}
}

public void update(Graphics g) {
paint(g);
}

public void paint(Graphics g) {
g.drawImage(img, 10, 50, this); // 버퍼 이미지를 화면에 그리기.
}
}

2. drawOval에서 그려지는 모든 점의 좌표 구하는 방법 혹은 drawOval의 함수 내부
원이나 타원의 그려지는 모든 점의 좌표 구하는 법은 Math.sin() Math.cos() 명령을 이용하면 구할 수 있습니다. 연구해 보세요
.

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby