C#, VB.NET Winform(Windows Forms) 실시간 모니터링 차트(chart) 구현 방법

2014. 6. 27. 17:11

 

 

 

 

본 포스팅에서는 닷넷(.net) 차트 컨트롤 히포차트를 활용하여 실시간 모니터링 차트를 구현하는 방법을 알아봅니다.

 

http://hippochart.com/ 

 

 

 

 

위 영상은 Hippochart 를 이용하여 실시간 Real Time 윈도우즈 폼 차트를 그린 샘플 동영상인데요, 이와 같이 공장 시스템, 장비, 주식 데이터 등 다양한 데이타들을 실시간으로 처리하여 그래프로 그릴 수 있습니다.

 

http://hippochart.com/trial/download.aspx

 

 

위 링크를 통해 평가판을 다운로드 할 수 있으며 샘플코드, 샘플 프로젝트는 평가판을 다운로드 하는 페이지에서 함께 다운로드가 가능하오니 참고하시면 되고 잘 안되시는 부분은 고객센터에 문의하시면 즉각 답변을 받으실 수 있습니다.

 

 

우선, 히포차트 평가판을 다운로드 하신 후 PC에 설치합니다.

 

설치 방법 및 샘플코드, 샘플 프로젝트는 평가판을 다운로드 하는 페이지에서 함께 다운로드가 가능하오니 참고하시면 되고 잘 안되시는 부분은 고객센터에 문의하시면 즉각 답변을 받으실 수 있습니다.

 

 

c#

 

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Hippo;
using Hippo.WindowsForm4;

namespace RealTimeSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.timer1.Interval = 1000;

            SeriesList sList = new SeriesList();
            sList.ChartType = ChartType.Line;

            sList.AxisFactor.YAxis.SetAxisStep(0, 1200, 200);

            // 마커
            AxisMarker mk2 = new AxisMarker("상한선", 800);
            mk2.TextFormat.Alignment = StringAlignment.Near;
            sList.AxisFactor.YAxis.Markers.Add(mk2);

            sList.SeriesCollection.Add(new Series());

            sList.AxisFactor.XAxis.Interval = 1;

            this.hHippoChart1.RealTimeList.Add(new HippoRealTimeAttribute());

            this.hHippoChart1.SeriesListDictionary.Add(sList);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Random rr1 = new Random();

            SeriesItem item = new SeriesItem(rr1.Next(999));

            if (item.YValue > 800)
            {
                item.Balloon = new Balloon();
                item.Balloon.Label.Text = "상한선 돌파!";
            }
 
            this.hHippoChart1.DrawRealTimeChart(20, item);
        }
    }
}

 

 

vb.net

 

 Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports Hippo
Imports Hippo.WindowsForm4

Namespace RealTimeSample
 Public Partial Class Form1
  Inherits Form
  Public Sub New()
   InitializeComponent()
  End Sub

  Private Sub Form1_Load(sender As Object, e As EventArgs)
   Me.timer1.Interval = 1000

   Dim sList As New SeriesList()
   sList.ChartType = ChartType.Line

   sList.AxisFactor.YAxis.SetAxisStep(0, 1200, 200)

   ' 마커
   Dim mk2 As New AxisMarker("상한선", 800)
   mk2.TextFormat.Alignment = StringAlignment.Near
   sList.AxisFactor.YAxis.Markers.Add(mk2)

   sList.SeriesCollection.Add(New Series())

   sList.AxisFactor.XAxis.Interval = 1

   Me.hHippoChart1.RealTimeList.Add(New HippoRealTimeAttribute())

   Me.hHippoChart1.SeriesListDictionary.Add(sList)
  End Sub

  Private Sub button1_Click(sender As Object, e As EventArgs)
   Me.timer1.Start()
  End Sub

  Private Sub timer1_Tick(sender As Object, e As EventArgs)
   Dim rr1 As New Random()

   Dim item As New SeriesItem(rr1.[Next](999))

   If item.YValue > 800 Then
    item.Balloon = New Balloon()
    item.Balloon.Label.Text = "상한선 돌파!"
   End If

   Me.hHippoChart1.DrawRealTimeChart(20, item)
  End Sub
 End Class
End Namespace

 

 

코드는 위와 같습니다.

 

실시간 데이터 생성은 타이머를 이용해서 랜덤 데이터를 생성하였고, 라인 마커를 통해 상한선을 표시하였습니다. 타이머를 돌면서 데이터를 생성하되 상한선을 넘은 데이터에는 풍선 도움말을 표시하는 형태의 코드입니다.

이 기본 샘플을 가지고 다각도로 응용하여 모니터링 시스템 차팅 기능을 구현할 수 있습니다.

 

 

 

 

히포차트는 뛰어난 실시간 차팅 퍼포먼스를 자랑하기도 하지만, 30여가지가 넘는 다양한 차트타입 지원과 풍부한 기능으로 닷넷 프로젝트에서 꾸준히 사랑을 받고 있습니다.

 

닷넷 프로젝트에서 차트가 필요하시다면 MS CHART 에서 뭔가 부족하시다면 외국 차트 보다는 히포차트를 가장 먼저 염두에 두시기 바랍니다.

 

 

http://hippochart.com/Default.aspx  

 

 

리바이 병장 마이 스토리/개발자