2008년 10월 30일
마우스로 다각형 그리기.
이번 글은 문제 풀이용 글입니다 -_-;
캔버스 예제를 만들어 했던 것 중에 좋은 예제가 있어서 캔버스 기초를 공부하는데 있어서 마지막 예제로 올릴까 합니다.
마우스로 다각형을 그리는 방법은 다음과 같습니다.
1. 캔버스 안에 마우스로 몇 회 정도 서로 다른 위치에 클릭을 합니다.
2. 그리기 버튼을 누르면 그림은 그려집니다.
힌트
1. 마우스로 클릭 할 때마다 해당 좌표를 기억해야 한다.
2. 삼각형, 사각형, 오각형...등 다각형 그리는 메소드를 활용한다.
3. 좌표를 기억할 때마다 마우스 클릭 수 또한 알 수 있도록 해야 한다.
자세한 힌트는 드래그 하시면 확인 가능합니다.
1. 백터를 이용하면 클릭한 수 만큼 백터에 저장 시키는 방법을 이용하면 다각형 그리기가 수월하다.
2. 마우스의 클릭을 이용해야 하므로 마우스 관련 리스너를 적절히 활용한다.

소스 보기(드래그 하세요 ~)
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MouseTest extends Frame{
Vector<XYpos> xy = new Vector<XYpos>();
Canvas canvas = new Canvas();
Button button = new Button("그리기");
public MouseTest(){
super("???");
this.setSize(800,800);
this.add(canvas,"Center");
this.add(button,"South");
this.setVisible(true);
canvas.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
XYpos xypos = new XYpos();
xypos.setX(e.getX());
xypos.setY(e.getY());
xy.add(xypos);
}
});
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int x[] = new int[xy.size()];
int y[] = new int[xy.size()];
for(int i=0;i<xy.size();i++){
XYpos xypos = xy.elementAt(i);
x[i] = xypos.getX();
y[i] = xypos.getY();
System.out.println("좌표 x : "+x[i]);
System.out.println("좌표 y : "+y[i]);
}
Graphics g = canvas.getGraphics();
g.drawPolygon(x, y, xy.size());
xy.clear();
}
});
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args) {
new MouseTest();
}
}
class XYpos{
private int x;
private int y;
public void setX(int x){
this.x = x;
}
public int getX(){
return this.x;
}
public void setY(int y){
this.y = y;
}
public int getY(){
return this.y;
}
}
# by | 2008/10/30 13:46 | 정리할 자료들 | 트랙백 | 덧글(1)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]