WPF 에서 타이머를 이용해서 실시간 차트를 그려봅시다.



[적용 버전]
  베타 2.0 이상

 중요 코드 설명

(1) 창 로드 이벤트
 - 이 이벤트 혹은 사용자 지정 이니셜라이징 메소드에서 아래의 로직을 넣어주시면 되겠습니다.



(2) 타이머 Tick 이벤트
- SeriesItem 을 생성하여 DrawRealTimeChart 를 호출하는 부분 외에는 코드를 최소화 해줍니다.



C#

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Navigation;
using System.Windows.Shapes;

using Media = System.Windows.Media;
using MediaImaging = System.Windows.Media.Imaging;
using System.Windows.Forms;
using Hippo;
using Hippo.ChartControl;

namespace WpfApplication2
{
    /// <summary>
    /// Window1.xaml에 대한 상호 작용 논리
    /// </summary>
    public partial class Window1 : Window
    {
        Timer timer1;
        hHippoChart hippo;

        /// <summary>
        /// 생성자
        /// </summary>
        public Window1()
        {
            InitializeComponent();
            timer1 = new Timer();
            hippo = new hHippoChart();
        }

        /// <summary>
        /// 창 로드 이벤트
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        { 
            // 히포차트 객체를 windowsFormsHost 의 Child속성에 넣는다.
            // 이 코드는 Tick 이벤트에 삽입되면 안됩니다.
            this.windowsFormsHost1.Child = hippo;

            // 타이머 설정
            timer1.Interval = 1000;
            timer1.Tick += new EventHandler(timer1_Tick);

            // 차트 크기 설정
            hippo.Width2 = (float)this.windowsFormsHost1.Width;
            hippo.Height2 = (float)this.windowsFormsHost1.Height;

            // 최초 빈 차트를 보여준다.
            hippo.DrawChart();

            // 시리즈리스트와 시리즈를 각각 한개씩 추가해놓는다.
            SeriesList sList = new SeriesList();
            sList.SeriesCollection.Add(new Series());
            hippo.SeriesListDictionary.Add(sList);
        }

        /// <summary>
        /// 타이머 틱 이벤트
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void timer1_Tick(object sender, EventArgs e)
        {
            this.txtSecend.Text = DateTime.Now.Second.ToString();

            Random rr1 = new Random();

            // 그릴 한 개의 데이터를 시리즈아이템으로 생성해서 DrawRealTimeChart에 넘겨준다.
            // (여기서는 편의상 랜덤으로 생성했습니다.)
            SeriesItem item = new SeriesItem(rr1.Next(999));
            item.Points = new Points();
            item.Points.Width = 6;
            item.Name = DateTime.Now.ToString("mm:ss");

            hippo.DrawRealTimeChart(item, 20);  
        }

        private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            this.timer1.Start();
        }

        private void btnEnd_Click(object sender, RoutedEventArgs e)
        {
            this.timer1.Stop();
        }
    }
}


VB 코드 보기


사업자 정보 표시
히포차트 | 하영대 | 경기도 성남시 수정구 복정동 631-5 401 | 사업자 등록번호 : 129-34-55719 | TEL : 031-751-6673 | Mail : hippochart@gmail.com | 통신판매신고번호 : 제 2010-경기성남-1203호 | 사이버몰의 이용약관 바로가기

Posted by 리바이 병장
,


/* 다음 웹인사이드 로그 분석*/