본문 바로가기

work/vb

[강좌 - 1] 깔끔한 차트(CHART)가 필요하십니까

출처: 데브피아/금명식(kgmoss)

 [강좌 - 1] 깔끔한 차트(CHART)가 필요하십니까.

 부제 - 차트를 그리기 위한 기본 지식 & 설정사항


(글을 편하게 쓰겠습니다.)

이전 강좌에도 밝혔듯이 차트를 그리기 위해서는 Line메서드 하나만 이용이 된다.

그러므로 Line메서드를 자세히 살펴볼 필요가 있다.


A. 아래는 MSDN의 내용을 그대로 옮긴것이다.


********************************************************************************************************************************************

Line 메서드

개체에 선과 사각형을 그립니다.

구문

object.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B][F]

Line 메서드 구문은 다음과 같은 개체 식별자 및 구성 요소로 되어 있습니다.

구성 요소 설명
object 선택. 적용 대상 목록에 있는 개체로 평가되는 개체식. object를 생략하면 포커스가 있는 Formobject로 간주됩니다.
Step 선택. CurrentX 속성 및 CurrentY 속성에 의해 지정된 현재 그래픽 위치와 관련 있는 시작점 좌표를 지정하는 키워드
(x1, y1) 선택. 선 또는 사각형의 시작점 좌표를 지정하는 Single 값. ScaleMode 속성은 사용되는 측정 단위를 결정합니다. 이를 생략하면 CurrentXCurrentY 속성으로 지정된 위치에서 선을 시작합니다.
Step 선택. 선의 시작점과 관련 있는 끝점 좌표를 지정하는 키워드
(x2, y2) 필수. 그릴 선의 끝점 좌표를 지정하는 Single
color 선택. 선을 그리는 데 사용되는 RGB 색상을 지정하는 Long 정수 값. 이를 생략하면 ForeColor 속성 설정값이 사용됩니다. RGB 함수 또는 QBColor 함수를 사용하여 색상을 지정할 수 있습니다.
B 선택. 이를 포함하는 경우 좌표를 사용하여 그려질 상자가 상자의 반대쪽 모서리를 지정합니다.
F 선택. B 옵션을 사용하는 경우 F 옵션은 상자를 그리는 데 사용된 것과 동일한 색상으로 상자를 채우도록 지정합니다. B 옵션을 사용하지 않고 F 옵션을 사용할 수 없습니다. F 옵션을 사용하지 않으면서 B 옵션을 사용하면 현재 FillColorFillStyle 값으로 상자를 채웁니다. FillStyle의 기본값은 투명입니다.

참고

연결된 선을 그리려면 이전 선의 끝점에서 다음 선을 시작해야 합니다.

그릴 선의 너비는 DrawWidth 속성의 설정값에 따라 달라집니다. 또한 배경에 선이나 상자를 그리는 방법은 DrawMode 속성 및 DrawStyle 속성의 설정값에 따라 달라집니다.

Line 메서드를 실행할 때 CurrentX 속성과 CurrentY 속성은 인수에 의해 지정되는 끝점으로 설정됩니다.

WithEnd With 블록 내에서는 이 메서드를 사용할 수 없습니다.


********************************************************************************************************************************************


자세히도 설명 해 놨다 ^^;


하나씩 살펴 보도록 하자.

1. Line메서드에서 꼭 있어야 하는 인자는 2가지 이다.

object.Line (x1,y1)-(x2,y2)

위의 2 좌표만 지정해 주면 라인은 그려진다.


2. Step

없어도 상관없는 인자이다.

라인을 연속해서 그려야 하기 때문에, '어디에서부터' 라는 의미로 해석하면 된다.

Step을 사용해도 상관없겠지만, 앞으로 진행될 강좌에서는 유일하게 빠지는 인자가 될 것이다.


3. Color

라인의 색을 지정해 준다.

Rgb값을 이용하여 사용할 것이다.


3. B

B인자을 사용하면  (x1,y1)-(x2,y2)에 지정된것의 사각형 모양을 그리게 된다.


4. F

위에 설명이 되어 있듯이 B인자로 만들어진 사각형을 채우는데 사용된다.


- ex

object.Line (x1,y1)-(x2,y2),RGB(255,0,0)         ==   라인그래프

object.Line (x1,y1)-(x2,y2),RGB(255,0,0),BF    ==   막대그래프(굉장히 편리하다)





B. PictureBox(이하 pBox)의 설정

1. pBox의 AutoReDraw속성값 = True

pBox가 다시 그려질 필요가 있을때(다른 화면에 가렸다 보이거나, 폼을 이동하거나.. 등등) 메모리에 저장된 이미지를 다시 그린다.

이 속성이 False면 차트가 처음 한번만 잘 나올 것이다~


2. pBox의 ScaleMode = 트윕

트윕단위는, 일반적으로 사용되는 포인트나 픽셀보다 훨씬 작은 값이다.

차트를 정밀히 표현하기 위해 단위를 트윕으로 한다.




C. 직접 선을 그려 보자.

아~. 차트를 그리기 위한 모든것을 다 배웠다.

직접 라인을 몇가지 그려보자.


프로젝트를 하나 열고 위의 값대로 pBox를 설정하고, pBox의 appearance=평면 으로 설정

Button을 하나 만든다.


Private Sub Command1_Click()

Dim blankVlaue As Long

    blankVlaue = pBox.ScaleHeight * (5 / 100) '(5 / 100)는 임의로 정한 수치입니다.

    pBox.Line (blankVlaue, blankVlaue)-(pBox.ScaleWidth - blankVlaue, pBox.ScaleHeight - blankVlaue), RGB(187, 187, 187), B '보조선출력

    pBox.Line (blankVlaue, blankVlaue)-(pBox.ScaleWidth - blankVlaue, pBox.ScaleHeight - blankVlaue), RGB(255, 0, 0) '라인출력

End Sub


blankVlaue는 그래프가 pBox의 전체를 차지하게 되면 모양이 좋지 않으므로, 임의적으로 어느정도 여유 공간을 두는것을 말한다.

첫번째 라인에서 B 옵션을 사용하여 보조선을 그렸다.



아주 간단히 차트의 기본적이 틀이 완성되었다.


이제 남은것은 Loop문을 사용하여 내가 원하는 값들을 라인으로 그리기만 하면 되는것이다.




----------------------------------------------------------------

다음 강좌에는 직접 라인 그래프를 그리는 강좌가 이어집니다.