개요
1. Chart Director for C++ 설치하기(DLL파일,도움말,예제 다운로드 받기).
4. 개발위한 도움말보기.
폴더중에 doc 속에 도움말 cppchartdir.chm 파일이 있으며, 이를 열어보면 설명이 상세하게 잘되어있다.
기타 : Chart Director 는 DLL 형식만 배포하며, static library 형식은 배포하지 않음.
from : https://www.chartdir.com/forum/download_thread.php?bn=chartdir_support&pattern=&thread=1274193057
2. ChartDirector DLL 활용할 프로젝트 설정.
ChartDirector for C++ 을 우리 프로젝트에서 활용하기 위한 설정사항 정리.
ChartDirector for C++ 은 DLL 형식이므로 개발중 프로젝트에서 이를 포함시켜 사용하기 위한 기본 설정은 일반적인 DLL 과 동일하다.
1. VC++에서 DLL 활용하는법 개요.. http://igotit.tistory.com/471
2. VC++ 에서 DLL 활용하는법. 예. http://igotit.tistory.com/483
ChartDirector for C++ 의 파일. | 프로젝트에서의 배치. |
chartdir60.dll | 프로젝트의 실행파일이 있는 폴더에 복사해온다. 실행되는 실체. |
chartdir60.lib | 프로젝트의 소스파일이 있는 곳에 복사해온다. implicit linking 시 필요하다. |
chartdir.h bchartdir.h memblock.h FinanceChart.h |
프로젝트의 소스파일이 있는 곳에 복사해온다. dll 이 노출시킨 함수정의 등이 있다. |
2. ChartDirector 에서 제공하는 클래스 CChartViewer 프로젝트에 포함시키기.
ChartDirector 는 챠트를 모두 이미지로 생성하고 있고, 이를 MFC에서 표현하기 위하여 Picture Control 을 활용한다. Picture Control 을 핸들링 하기 편리한 클래스 CChartViewer 를 제공해주고 있다. 이 클래스를 우리 프로젝트에 포함시키자.
2.1 CChartViewer 클래스 파일 2개 프로젝트 소스 폴더로 복사.
다운로드 받은 ChartDirect 폴더 ..\mfcdemo\mfcdemo\ 에 있는 ChartViewer.cpp, ChartViewer.h 파일을 우리 프로젝트의 소스 폴더에 복사해온다.
2.2 우리 프로젝트에서 상기2.1의 2개의 파일 추가한다.
솔루션 탐색기에서 헤더파일 우마우스클릭 추가 -> 기존항목 클릭 하여 CChartViewer.h 선택한다.
위와같이 2개 파일 추가후 클래스 뷰에 클래스 CChartViewer 가 들어와 있음을 확인할 수 있다.
- 클래스 CChartViewer 는 MFC 클래스 CStatic 이 베이스클래스 임을 알 수 있다. 실제활용시 우리 프로젝트에서는 도구상자에서 Picutre Control (CStatic임) 을 배치하고 Picture Control을 CChartViewer 로 받아서 사용하게된다.
3. 프로젝트에서 ChartDirector DLL implicit linking 처리.
아래 구문의 #pragma comment .. 가 implicit linking 처리되는 것.
헤더파일은 #pragma.. 와 동일 장소일 필요없고 클래스 CChartViewer 를 활용하는 곳에서 포함한다.
#pragma comment(lib,"chartdir60.lib") // DLL Implicit linking #include "ChartViewer.h" // |
3. 프로젝트에 Picture Control 배치 |
|
ChartDirector 는 Picutre Control 을 이용하여 챠트를 표현하게 되므로 우리 프로젝트에서 이를 포함시키고 앞의 설정에서 추가시켜둔 클래스 CChartViewer 와 연결시키는 처리 해줘야 한다. 1. Picture Control 배치.
- 개발중 VC++ 프로젝트의 도구상자에서 Picture Control 배치한다(아래그림)
위 배치된 상태에서 Picture Control 설정에서 Type 을 Bitmap 으로 선택한다. 2. Picture Control 설정 배치된 Picture Control 우마우스클릭하여 변수추가 클릭한다(아래 그림). 변수설정창에서(아래 그림), 변수형식을 CChartViewer 로하고 변수이름 기록한다. 요약 : 우리 프로젝트에서 ChartDirector 에서 생성된 챠트를 Picture Control (클래스 CChartView 타입의 "m_ChartViewer" 로 접근가능한) 에 표현 할 수 있는 상태까지 달성함. |
|
챠트 코딩 전체흐름. |
|
ChartDirector DLL 이용하여 챠트 표현하는 코딩 전체 흐름.
1. 챠트 개체 생성한다. 예: XYChart * c = new XYChart(200,200); //초기화 전달값은 픽셀단위의 챠트크기임.
2. 상기1의 챠트개체에 plotarea 설정한다. 예; c->setPlotArea(20,20,180,180); // 20,20시작좌표, 180,180 width,height
3. 챠트개체에 데이터를 전달하여 그린다. 예; c->addLineLayer(DoubleArray(data,size of data));
4. 그려진 챠트를 표현한다. m_ChartViewer.setChart(c); // Picture Control 에 이미지 표현된다.
|
|
상세 활용정보. - ChartDirector 데이터 표현시 X축. |
|
1. 챠트에 표현되는 각 데이터 포인터의 x 값은 지정하지 않아도 된다.
- x값을 지정하지 않은 경우 Y값 배열의 인덱스(0,1,2,3,...) 가 X값으로 처리되고 데이터 표현시 x 축으로는 동일한 간격을 가진것으로 표현된다.
2. 챠트에 표현된 데이터 포인트들의 x축 값을 지정하기 위해서는 Layer.setXData 혹은 Layer.setXData2 함수를 이용하여 지정한다.
- x값을 지정하는 경우엔 Axis.setLabels , Axis.setLabes2 함수는 사용하면 안된다.
3. X축 스케일 설정은 Axis.serLinearScale, Axis.setLogScale, Axis.setDataScale 함수를 이용하여 설정가능하다.
Layer.setXData
void setXData(DoubleArray xData);
- 챠트 Layer 에 지정된 Y값 배열의 인덱스에 대응하는 x값 지정하는것.
- 1개의 Layer 당 1개의 x 값 배열만 지정가능. 1개의 Layer 에 여러 개의 Y dataset이 있는 경우, 모든 Y dataset 은 지정된 1개의 x값 배열이 대응됨. 다른 X 값들이 지정되어야 한다면 Layer 를 추가하고 추가된 Layer 에 Y dataset 과 X dataset을 별도로 지정해야한다.
|
|
ChartDirector 마우스이벤트 핸들링.
forum
If you are trying the ChartDirector MFC samle code (in the "mfcdemo" subdirectory), it contains examples on how to handle mouse messages.
The sample code uses a CChartViewer control, which is a derived class of the MFC CStatic control. The source code of CChartViewer is included in the sample code.
Basically, handle mouse messages for CChartViewer is the same as handling mouse messages in the standard MFC CStatic control. ChartDirector has not changed the standard MFC mouse messages. For example, to detect mouse clicks, simply listens to the BN_CLICK message, the same as the BN_CLICK message in other MFC CStatic controls.
If you want to detect if the user has clicked on any data point on the chart, after your recieve the mouse click, you may use the ImageMapHandler to check the user is clicking on a data point. This is the method used in all our sample code.
For example, a typical code may be like:
//the BN_CLICK handler for the CChartViewer control
void CZoomscrolldemoDlg::OnChartViewer_Click()
{
ImageMapHandler *handler = m_ChartViewer.getImageMapHandler();
if (0 != handler)
{
//
// Query the ImageMapHandler to see if the mouse is on a clickable hot spot. We
// consider the hot spot as clickable if its href ("path") parameter is not empty.
//
const char *path = handler->getValue("path");
if ((0 != path) && (0 != *path))
{
// In this sample code, we just show all hot spot parameters.
CHotSpotDlg hs;
hs.SetData(handler);
hs.DoModal();
}
}
}
본 글이 포함된 상위 정리 장소. Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11 |
///553.
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
Window Types. (0) | 2016.01.17 |
---|---|
MFC 프로그래스 컨트롤 사용하기. (0) | 2016.01.16 |
MFC 체크박스 사용하기. (0) | 2016.01.15 |
Thread Safety (스레드 안전) Interlocked. 함수들. (0) | 2016.01.12 |
Thread Local Storage(스레드 로컬 스토리지) (0) | 2016.01.12 |
댓글