2008년 10월 16일
도전과제?

저번 글에서 그래프를 그리는 것을 이야기 했습니다. 그래프를 그리는 방법으로는 캔버스를 활용해야 하고
힌트로는 레퍼런스형 변수에 주의 하라 했을 겁니다.
캔버스 클래스의 특징에 대해서 잠깐 이야기를 더 하고자 합니다.
캔버스는 그림을 그리는 도화지라고 생각을 합시다.
캔버스는 하나의 그리기 도구를 갖고 있습니다. 그림을 그리는 붓이라고 생각하시면 됩니다.
그런데 캔버스는 무슨 일이 있어도 반드시 이 붓으로만 그림을 그리게 돼 있죠.
그 붓은 바로 Graphics 형 객체입니다. 그래픽스 클래스가 그림을 캔버스에 그리기 때문에 이녀석을 이용하면 마음껏 그림을 그릴 수 있는 것이지요.
바로 이 그래픽스를 끄집어 내면 어디서든 그림을 그릴 수 있습니다.
그래서 레퍼런스형 객체를 다시 생각해봐야 하는 것입니다.
Graphics g = canvas.getGraphics();
이 소스 라인이 캔버스로 부터 붓을 끄집어 내는 과정이지요. 끄집어 낸다고 하기 보다는 접근을 하는 방법입니다. 자바에서는 private, public 등 접근제어자가 있다는 것을 알고 계시죠?
그러니 getGraphics(); 메소드를 이용하면 접근이 가능하므로 붓에 대한 접근이 가능하죠.
그렇게 그림을 그려주면 막대 그래프는 쉽게 그려집니다.
그리고 마지막으로 캔버스의 paint 메소드의 특징을 이야기 해봅시다. 저번에도 이야기 했듯이 paint 메소드는 캔버스가 화면에 불려 나가게 되면 자동적으로 실행 된다고 했습니다. 이벤트리스너 처럼 말이죠. 주의 하세요 ~~
만약 자신이 그린 그래프 들이 사라지는 등의 이상현상이 발생 한다면 이 점을 더 생각해봐야 할 것입니다.
이 정도면 해답 수준의 해설이라 생각이 됩니다만..;;
그럼 이번에는 조금 ~ 난이도를 올려서(솔직히 잔머리에 속하는 수준 ㅋㅋ) 막대 그래프가 아닌 원형 그래프(원형차트)를 그려보도록 하죠.
원형 차트는 각각 입력 값을 받아서 백분율로 나타내는 그래프 입니다.
그럼 간단한 공식이 필요 하겠죠?
(비교값/기준값) * 100
이렇게 하면 퍼센트 값이 나오겠죠?
그리고 원형 그래프는
fillArc 메소드를 이용하면 되겠죠?
좌표 계산과 각도 계산은 알아서 하시길 ~
막대그래프에서 일부 코드만 수정하면 쉽게 할 수 있을거라 봅니다.
그리고 마지막으로 성공 하신 분은 다음의 문제점을 해결하는 방법을 알려주셨으면 합니다.
그림을 그리는 메소드 들은 int 형 값을 넣어줘야 하는데 백분율을 계산하게 되면 소수점이 나오는 문제점입니다.
소수점 값을 버리게 되는 문제점 때문에 그래프의 문제가 되는 것을 해결 하는 방법을 알려주셨으면 합니다.

# by | 2008/10/16 21:54 | 정리할 자료들 | 트랙백 | 덧글(2)





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