2008년 10월 14일
Canvas 활용하기.

이번 글은 Canvas 활용편입니다.
자바를 공부 하면서 참...이 부분이 재미는 조금 없다는 느낌인지라 성의가 조금 부족하게 됐습니다 -_-;;
그럼 일단 Canvas에 대해서 알아봅시다.
1. java.awt 패키지 내에 존재합니다.
2. 그래픽 처리를 할 수 있다.
- 그림을 그리는 스케치북으로 알아두고 시작하는 편이 좋습니다.
3. void paint(Graphics g)를 오버라이딩 해서 직접 그리기가 가능합니다.
4. Canvas가 화면에 보여지게 되면 자동적으로 void paint 가 호출 됩니다.
- 이 부분은 이벤트리스너와 비슷하죠?
5. Canvas만 그리기가 되는 것은 아닙니다. Panel도 같은 기능을 할 수 있다더군요.
- 그래서 패널에 Canvas형 객체를 넣지 못하는게 아닐까요?
이런 특징을 갖는게 Canvas 라고 하네요.
그럼 처음 부터 어려운 것을 할 수는 없고 기본적으로 캔버스를 통해서 학습을 쉽게 할 수 있는 것에 대해서 이야기 해봅시다.
캔버스에 그림을 그리는 것은 대부분 x축과 y축을 이용해서 그림을 그리게 됩니다.
그리고 캔버스를 이용해서 그리는 것이 아니라 캔버스에 그래픽(Graphics) 클래스를 이용해서 그리게 됩니다.
직선 - 시작점 xy 좌표와 끝점 xy 좌표가 필요
사각형 - 시작점 xy 좌표와 가로 세로 길이가 필요
원 - 사각형의 기준을 이용하지만 사각형이 생기는 것이 아니라 사각형 안에 딱 들어 맞는 원이 생깁니다.
삼각형, 오각형, 육각형 기타 등등 다각형의 도형들은 조금 복잡할지는 모르겠지만 모든 꼭지점의 좌표와 도형의 꼭지점 수를 넣어주면 다각형 도형이 만들어지게 됩니다. 조금 노가다 같을 겁니다.
그 외에도 메소드가 여러가지 존재 하니 API에서 그래픽 클래스에 대해서 참고하세요 ~
음.. 많은 것은 설명하지 않겠습니다. 이유는 기초가 탄탄한 상태에서는 API를 참고하기만 해도 기초 문제는 쉽게 따라할 수 있으니까요.
그럼 제일 위에서 봤던 그래프 출력 프로그램을 어떻게 짜야 할지 알아보도록 합시다.
일단은 막대기들의 색상은 무시하고 막대 그래프를 표현하는 방법을 알려드리도록 하겠습니다.
가늘기 때문에 직선으로 착각 할 수 있으나 저것은 사각형 도형입니다.
그외에는 어렵다 할 수 있는 것은 이벤트 처리가 될 수 있겠지만 한가지 당부를 하고 넘어가도록 하겠습니다.
분명 프레임에 Canvas를 넣어서 첫 화면을 출력했을 때는 그래프들은 존재하지 않을겁니다.
프레임.add(캔버스);
그럼 그리기를 누르면 다시 프레임.add(캔버스); 이렇게 해야 할까요?
아닙니다. 이 부분에서 어려워 하실 수 있는데 캔버스 클래스 안에는 그래픽 객체가 하나 밖에 존재 하지 않는다. 라는 것을 생각해봐야 합니다.
캔버스 클래스 안에 그래픽 객체가 하나다...
그럼 그래픽 객체가 하나면 모든 그래프 막대기는 하나의 그래픽 객체에 그려진 것이라고 생각 할 수 있습니다.
바로 이 객체를 끄집어 내서 접근을 시도 해야 다시 그리기가 될 것입니다.
버튼을 이벤트 리스너로 구성을 할 때 캔버스의 그래픽 객체를 끌어내서 변경을 할 수 있도록 해야 합니다.
접근의 방법에 대해서 생각을 하면 답은 쉽게 나옵니다.
답은 드리지 않겠습니다. 힌트를 드리자면
클래스로 변수를 선언 하는 행위는 레퍼런스형 객체를 선언하는 일이다. 이 정도면 힌트가 충분 할 거라 생각됩니다.
레퍼런스형 객체가 중요합니다.
끝으로 자바 awt를 공부하면서 재미가 조금 떨어지는 이유가 노가다 같은 작업 때문이라 생각 됩니다. 그래도 어쩌겠습니까 열심히 하다보면 이것도 머릿속에 그림이 그려지니 쉬워지겠지요 ~
아 그리고 위에 그래프 그리는 프로그램을 성공한다면 화이트 보드도 도전해보는게 실력 키우는데는 딱 좋지 않을까 합니다.
그럼 다음에 또 만나요 ~
# by | 2008/10/14 19:25 | 정리할 자료들 | 트랙백 | 덧글(1)





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