윈도우스 폼프로그래밍에서 그래프나 차트를 그리기 위한 콘트롤로 chart 라는 것이 있다. (.net 4.5부터인가 지원하기 시작함) 이것을 이용하면 간단한 그래프를 작성하는데 외부 라이브러리(예를 들어 oxyplot)를 사용할 필요가 없다.


 비주얼 스튜디오로 winForm 프로젝트를 하나 생성하여 도구상자에서 chart를 끌어다가 적당히 위치시킨 후 docking 시킨다.



그러면 chart1이라는 인스턴스가 생성되는데 이것를 이용하여 그래프를 제어할 수 있다.



using System.Windows.Forms.DataVisualization.Charting;
private void Form1_Load(object sender, EventArgs e)
{
 chart1.Series.Clear(); //default series를 삭제한다.
 Series sSin = chart1.Series.Add("sin"); //새로운 series 생성
 sSin.ChartType = SeriesChartType.Line; //그래프 모양을 '선'으로 지정
 //데이터 포인트 저장
 for (double k=0;k<2*Math.PI;k+=0.1)
 {
      sSin.Points.AddXY(k, Math.Sin(k));
 }
}


결과 화면은 다음과 같다.



한 화면에 다수의 그래프를 그릴 수도 있는데 Series 객체만 추가시켜주면 된다.


private void Form1_Load(object sender, EventArgs e)
{
   chart1.Series.Clear(); //default series를 삭제한다.
   Series sSin = chart1.Series.Add("sin"); //새로운 series 생성
   sSin.ChartType = SeriesChartType.Line; //그래프를 '선'으로 지정
   //데이터 포인트 저장
   for (double k=0;k<2*Math.PI;k+=0.1)
   {
       sSin.Points.AddXY(k, Math.Sin(k));
   }
           
   // 같은 화면에 그래프 추가
   Series sCos = chart1.Series.Add("cos"); //새로운 series 생성
   sCos.ChartType = SeriesChartType.Line;
   for (double k = 0; k < 2 * Math.PI; k += 0.1)
   {
       sCos.Points.AddXY(k, Math.Cos(k));
   }
}


그러면 다음과 같이 두개의 그래프가 그려진다.



chart콘트롤은 Series객체가 갱신될 때마다(즉, 데이터 포인트가 추가될때마다) 자동으로 그래프 영역을 갱신시켜 준다.




Posted by 살레시오
,