히포차트를 통해 다양한 실시간 차트를 그리는 방법을 알아보고 있습니다. 이번에는 닷넷 컨트롤인 BackgroundWorker 를 이용해서 그리는 방법을 알아보겠습니다. BackgroundWorker 는 스레딩 프로그램을 손쉽게 구현할 수 있게 해주는 컨트롤입니다.
[적용 버전]
베타 2.0 이상 |
[시나리오]
1. 백그라인트워커를 통해 1초마다 들어오는 데이터를 히포차트에 넘겨 실시간으로 그려주되 x축은 총 20개를 유지하도록 한다. 2. 라인차트로 그리고 포인트 크기는 4으로 하고 포인트가 Fill되는 모양으로 한다. 3. x축은 분 : 초 형식(00:00) 으로 보여지게 한다. |
C#
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) e.Result = Draw((int)e.Argument, worker, e); private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) private long Draw(double data, BackgroundWorker worker, DoWorkEventArgs e) if (currentValue >= 20) SeriesItem item = new SeriesItem((float)data); this.hHippoChart1.DrawRealTimeChart(item, userMaxCount); long result = 0; if (worker.CancellationPending) resultLabel.ForeColor = Color.Green; System.Threading.Thread.Sleep(1000); this.Draw(rr1.Next(100), worker, e); return result; private void btnStart_Click(object sender, EventArgs e) SeriesList sList = new SeriesList(); sList.SeriesCollection.Add(new Series());
resultLabel.ForeColor = Color.Blue; this.backgroundWorker1.RunWorkerAsync(0); private void btnCancel_Click(object sender, EventArgs e) |
VB
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Private Sub backgroundWorker1_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Private Sub backgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Private Sub backgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Private Function Draw(ByVal data As Double, ByVal worker As BackgroundWorker, ByVal e As DoWorkEventArgs) As Long Private Sub btnStart_Click(ByVal sender As Object, ByVal e As EventArgs) Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As EventArgs) |
이상 간단히 알아보았습니다. 데이터는 편의상 랜덤으로 생성하였습니다. 사용시에는 우선 코드 복사 후 데이터 받는 부분만 구현하시면 되겠습니다.
'WinForm examples' 카테고리의 다른 글
CPU 사용률 차트를 그려보자! (3) | 2009.04.08 |
---|---|
이차함수, 일차함수, 삼각함수의 그래프를 그려보자! (0) | 2009.04.07 |
Timer를 이용해서 실시간 차트를 그려보자. (2) | 2009.03.29 |
디자인 타임에서 Gauge chart를 그려보자. (0) | 2009.03.26 |