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() {
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 = 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.fillRect(0, 0, 300, 300);
// 게임의 비행기라고 생각하시면 됩니다. 그리기
gc.setColor(Color.black);
gc.drawRect(px, 10, 30, 30);
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() 명령을 이용하면 구할 수 있습니다. 연구해 보세요.
댓글 없음:
댓글 쓰기