본 자료는
1.히스토리 데이터 차트 구현 방법
1-1. 갱신 모드
1-2. 과거(이전) 데이터 조회 모드
2. 차트 구현을 위한 주요 인터페이스 기능 설명
3. X축 Scroll(과거 데이터 보기) 기능 구현 예제
순서로 진행합니다.
SmartDraw를 활용하여 차트 구현 시 X축 Scroll(과거 데이터 보기) 기능, X축 커서 기능 등이 제공되지 않아 차트 사용 시 불편함이 존재하였습니다. 본 문서는 이러한 기능을 구현하는 방법을 제시하고 있습니다.
SmartDraw로 구현한 차트의 X축 Scroll 기능 영상
히스토리 데이터 차트를 구현하기 위해서는 발생되는 데이터를 표현하고 내부 버퍼에 저장하기 위한 갱신 모드와 과거(이전) 데이터를 조회하기 위한 모드의 구현이 필요합니다.
1-1. 갱신 모드
갱신 모드는 데이터 발생 시 차트(화면)에 즉시 표현(갱신)하고, 내부의 버퍼에 저장하기 위한 모드입니다. 즉, 차트의 진행이 화면에 표현되어 데이터의 변화를 직접 확인할 수 있습니다. 본 예제에서는 발생되는 데이터를 화면에 빠르게 표시하기 위해 데이터가 발생될 때마다 PutData() 메소드를 호출하고, m_listChartDatas 배열에 데이터를 저장하도록 작성되어 있습니다. 아래 그림과 첨부된 예제의 소스 코드를 확인하시기 바랍니다.
1-2. 과거(이전) 데이터 조회 모드
과거(이전) 데이터 조회 모드는 갱신 모드에서 저장한 내부의 버퍼에 저장된 데이터를 차트(화면)에 표시해 조회하기 위한 모드입니다. 즉, 화면에 데이터의 변화를 표현할 필요가 없으며, 저장된 과거의 데이터를 일괄로 빠르게 표현해야 합니다. 본 예제에서는 과거의 데이터를 일괄로 차트 전체에 표시하기 위해 반복문을 통해 화면에 표현할 데이터 수만큼 m_listChartDatas 배열의 데이터를 PutData() 메소드를 통해 차트 버퍼에 저장 후 ChartNowDraw() 메소드를 호출해 화면에 일괄로 표시하도록 작성되어있습니다. 아래 그림과 첨부된 예제의 소스 코드를 확인하시기 바랍니다.
2. 차트 구현을 위한 주요 인터페이스 기능 설명
본 문서의 예제는 SmartDraw를 사용해 구현하였으며, 부가 기능 구현을 이해하기 위해서 반드시 SmartDraw의 관련 인터페이스를 먼저 학습해야합니다.
인터페이스명 | Chart.SetChartConfig() | 구분 | 메서드 | |
---|---|---|---|---|
설명 | Chart를 그리기 위해 Chart 관련 파라미터를 설정합니다. | |||
C# 사용법 |
// Chart의 원점 : (10, 260), 크기 : 630 X 270, X좌표 증가값 : 3, 스크롤 방식 : Left // 인자 생략 시 폼 디자이너 속성창에서 설정한 값으로 적용 smartDraw1.Chart.SetChartConfig(10, 260, 630, 270, 3, SmartDraw.CHARTREFRESH.LEFTSCROLL); |
인터페이스명 | Chart.SetChartConfig() | 구분 | 메서드 | |
---|---|---|---|---|
설명 | Chart를 그리기 위해 Chart 관련 파라미터를 설정합니다. | |||
C# 사용법 |
// Chart의 원점 : (10, 260), 크기 : 630 X 270, X좌표 증가값 : 3, 스크롤 방식 : Left // 인자 생략 시 폼 디자이너 속성창에서 설정한 값으로 적용 smartDraw1.Chart.SetChartConfig(10, 260, 630, 270, 3, SmartDraw.CHARTREFRESH.LEFTSCROLL); |
인터페이스명 | Chart.PutData() | 구분 | 메서드 | |
---|---|---|---|---|
설명 | Chart를 그리기 위해 Chart 데이터를 입력합니다. | |||
C# 사용법 |
// Chart Channel이 3개인 경우 3개의 인자를 설정 // Ch1 = iVal1, Ch2 = iVal2, Ch3 = iVal3 smartDraw1.Chart.PutData(iVal1, iVal2, iVal3); |
인터페이스명 | Chart.PutData() | 구분 | 메서드 | |
---|---|---|---|---|
설명 | Chart를 그리기 위해 Chart 데이터를 입력합니다. | |||
C# 사용법 |
// Chart Channel이 3개인 경우 3개의 인자를 설정 // Ch1 = iVal1, Ch2 = iVal2, Ch3 = iVal3 smartDraw1.Chart.PutData(iVal1, iVal2, iVal3); |
인터페이스명 | Chart.ChartDrawStep | 구분 | 속성 | |
---|---|---|---|---|
설명 | 화면에 새로 추가된 데이터를 적용하기 위한 Putdata() 메소드의 호출 빈도를 설정합니다. 이 속성을 활용하면 빈번한 데이터의 추가로 화면의 갱신에 따른 성능의 문제를 해결할 수 있으며, Chart의 표현방식에 따라 ChartDrawStep 속성값을 조절하여 최적화된 Chart를 표현할 수 있습니다. 기본 설정값은 1입니다. | |||
C# 사용법 |
// PutData() 메소드가 10번 호출될 때마다 화면에 추가된 데이터를 반영(Chart 화면 갱신)하고 // 내부 버퍼를 삭제합니다. smartDraw1.Chart.ChartDrawStep = 10; |
인터페이스명 | Chart.ChartDrawStep | 구분 | 속성 | |
---|---|---|---|---|
설명 | 화면에 새로 추가된 데이터를 적용하기 위한 PutData() 메소드의 호출 빈도를 설정합니다. 이 속성을 활용하면 빈번한 데이터의 추가로 화면의 갱신에 따른 성능의 문제를 해결할 수 있으며, Chart의 표현방식에 따라 ChartDrawStep 속성값을 조절하여 최적화된 Chart를 표현할 수 있습니다. 기본 설정값은 1입니다. | |||
C# 사용법 |
// PutData() 메소드가 10번 호출될 때마다 화면에 추가된 데이터를 반영(Chart 화면 갱신)하고 // 내부 버퍼를 삭제합니다. smartDraw1.Chart.ChartDrawStep = 10; |
인터페이스명 | Chart.ChartNowDraw() | 구분 | 메서드 | |
---|---|---|---|---|
설명 | ChartDrawStep 값에 상관없이 즉시 데이터를 반영(Chart 화면 갱신)하고 내부 버퍼를 삭제합니다. |
|||
C# 사용법 |
// 내부에 저장되어 있는 데이터들로 Chart를 즉시 새로 그리게 합니다. smartDraw1.Chart.ChartNowDraw(); |
인터페이스명 | Chart.ChartNowDraw() | 구분 | 메서드 | |
---|---|---|---|---|
설명 | ChartDrawStep 값에 상관없이 즉시 데이터를 반영(Chart 화면 갱신)하고 내부 버퍼를 삭제합니다. |
|||
C# 사용법 |
// 내부에 저장되어 있는 데이터들로 Chart를 즉시 새로 그리게 합니다. smartDraw1.Chart.ChartNowDraw(); |
만약 ChartDrawStep 속성값이 10일 때 내부 버퍼 5정도에서 ChartNowDraw() 메소드가 호출되는 경우, 설정된 ChartDrawStep 속성값에 상관없이, 즉시 데이터를 차트에 반영 및 갱신하고 내부 버퍼를 삭제합니다.
인터페이스명 | Chart.PutDataAllClear() | 구분 | 메서드 | |
---|---|---|---|---|
설명 |
현재 진행중인 Chart 내부의 모든 데이터를 삭제합니다. PutData가 내부 버퍼에 저장한 내용을 Clear 해줍니다.
PutData 함수는 입력된 Chart의 데이터를 내부적으로 일정 수를 저장하고 있습니다. PutDataAllClear 함수는 저장된 데이터를 모두 삭제합니다. |
|||
C# 사용법 | smartDraw1.Chart.PutDataAllClear(); |
인터페이스명 | Chart.PutDataAllClear() | 구분 | 메서드 | |
---|---|---|---|---|
설명 | 현재 진행중인 Chart 내부의 모든 데이터를 삭제합니다. PutData가 내부 버퍼에 저장한 내용을 Clear 해줍니다. PutData 함수는 입력된 Chart의 데이터를 내부적으로 일정 수를 저장하고 있습니다. PutDataAllClear 함수는 저장된 데이터를 모두 삭제합니다. | |||
C# 사용법 | smartDraw1.PutDataAllClear(); |
만약 ChartDrawStep 속성값이 10일 때 내부 버퍼 5정도에서 PutDataAllClear() 메소드가 호출되는 경우, 내부 버퍼에 저장된 데이터를 모두 삭제하고 새로 데이터를 저장할 수 있게 합니다.
3. X축 Scroll(과거 데이터 보기) 기능 예제
① StartDrawing 버튼 : 차트에 랜덤한 값을 그리기 시작합니다.
② StopDrawing 버튼 : 차트 그리기를 중지합니다.
③ 차트 영역 : 차트가 그려지는 영역으로, 좌측에서 우측으로 그려집니다. 차트가 그려질수록 X축의 레이블값이 증가합니다.
④ Track Bar : 차트의 원하는 부분(History)을 확인할 수 있습니다.
⑤ 터치 Index / Y값 : 차트 영역(③)의 특정 위치 클릭 시, 클릭한 차트의 좌표와 Y축 값이 표시됩니다.
⑥ Close 버튼 : X축 Scroll(과거 데이터 보기)기능 예제 프로그램 닫기