실전 Applet 차트 만들기!!!
--------------------------------------------------------------------------------------------------------
Graphics
clearRect(시작점x,시작점y,폭,높이);사각형으로 지운다..
drawArc(시작점x,시작점y,폭,높이,시작각도,끝나는각도);호를 그린다
drawImage(이미지,이미지시작x,이미지시작y,이미지표시되는프레임(현재프레임-this),폭,높이);
toolkit을 통해서 이미지 얻어올것!!
drawLine(시작점x,시작점y,끝x,끝y);일직선으로 선을 긋는다
drawPolygon(x배열,y축배열,int);다각형
drawPolyline();
drawRect(x,y,폭,높이);사각형
drawRoundRect(x,y,폭,높이,각도);둥근사각형
drawString(문자열,x,y);문자열을 그림으로
fillRect...() 속을 채운다!!(getColor,setColor,getFont)로 지정한다.
setXORMode(Color)겹쳐지는부분 색 지정
--------------------------------------------------------------------------------------------------------
1. 차트에서의 pixel 비율로 변환하는 과정
AAA = 최대값-실제값 /(최대값-최소값)
최대값 : 200
최소값 : 100
실제값 : 150
ex) (200 - 150) / 100 = 0.5 (AAA값)
최대값 : 200
최소값 : 100
실제값 : 180
ex) (200 - 180) / 100 = 0.2
최대값 : 200
최소값 : 100
실제값 : 110
ex) (200 - 110) / 100 = 0.9
2. 차트에 그려질 Y축의 값 구하기
0
│ <- 캔버스 윗단
│-----------------------------
│ ∧
│ │ <- 캔버스 사용 높이
│ │
│ o o │
│ o │
│ o │
└──────────---------
300 (y축 pixel 비율)
Applet 높이 : 480
캔버스 사용 높이 : 320 (Applet 높이의 2/3만 실 차트로 사용)
캔버스 윗단 : 80
BBB(y축값)
BBB = (pixel로 변환된 값(AAA) * 캔버스 사용높이)+캔버스의 윗단(캔버스의 한토막= 캔버스 높이 / 6 )
ex) (0.5 * 320)+80 = 240 pixel(캔버스 표시 y축 좌표) 실제값 (150)
ex) (0.2 * 320)+80 = 144 pixel(캔버스 표시 y축 좌표) 실제값 (180)
ex) (0.9 * 320)+80 = 368 pixel(캔버스 표시 y축 좌표) 실제값 (110)
(for문 사용 i=0 부터...)
3. x,y 축 값을 이용하여 그래프 만들기
# 꺽은선 그래프
fillRect 사용 : g.fillRect(x축,y축,width,height);
ex) fillRect(x축(i x 30 + 20-1), y축(240), 3 ,3 );
1. i 값 증가시 x 30 을 x축 간격 조절
2. 기본 20-1 ((i==0)일때) 즉, 19간격에 위에서 구한 y축 좌표값 으로
3. 19,240 좌표에 높,넓이 3의 타원을 그린다.
----------------------------------------------------------------------------------
각 좌표값 잇기!!! (i>0) 클때
drawLine 사용 : g.drawLine(start x축, start y축, end x축, end y축);
즉, g.drawLine(이전좌표 xy, 현좌표 xy)
ex) g.drawline((i-1) x 30 + 20 , 240, i x 30 +20, 144);
1. 이전좌표의 (i-1) x 30 +20 은 현 좌표에서 이전좌표의 x축 값을 구하기위함
2. i x 30 +20 은 현 좌표의 x축 을 구함
# 막대 그래프
1. 최소값 비교 후 ex) if (Integer.parseInt((String) applet.vtSent.elementAt(i)) == applet.naxismin)
2. 최소값 일 경우
G.drawLine(i * 30 + 20 - 10, y축 , i * 30 + 20 - 1, y축); // 선하나만 그린다
3. 최소값이 아닐 경우(g.fillRect 사용)
G.fillRect(i * 30 + 20 - 10, nSent, 9, -(nSent - (int) (getSize().height * 5 / 6)));
------->G.fillRect(x축 , y축 , width, height);
-(y축 - (int) (getSize().height * 5 / 6)) -> y축 좌표값에서 Applet 높이의 5/6을 뺀다
ex)
y축 240
Applet 높이 480
-(240-(480*5/6)) ---> -(240 - 400) => -(-160) => 160
'Applet' 카테고리의 다른 글
JFreeChart (한글 깨짐 현상 해결) (0) | 2010.01.18 |
---|---|
APPLET 이란??? (0) | 2009.12.29 |