PC의 작업 관리자에 있는 CPU 사용률 그래프를 히포차트로 한 번 구현해 보겠습니다. 베타 2.0 부터 실시간 차트를 본격 지원하게 되어 간단히 구현이 가능합니다.
[적용 버전]
베타 2.0 이상
[시나리오]
성능 카운터에서 1초마다 CPU 값을 받아와 Timer 컨트롤을 이용해서 CPU 이용률 실시간 차트를 그린다.
중요 코드 설명
(1) 폼 로드 이벤트
- 폼 로드 이벤트에서 각종 기본 세팅을 해준다.
타이머 초기화 및 시작
성능 카운터에서 받아올 값을 CPU로 설정한다.
시리즈 리스트를 초기화하고 시리즈를 하나 추가한 다음 히포차트 객체에 추가한다.
작업 관리자 처럼 검은색 배경에 그린 계열의 축이 나오도록 수정한다.
축의 눈금 및 수치를 안보이게 해준다.
(2) Tick 이벤트
- 타이머의 Tick 이벤트에서 아래와 같이 성능카운터의 값을 가져와서 DrawRealTimeChart() 메소드를 반복적으로 호출해준다. 아래 50이라는 파라미터는 차트의 가로로 보여줄 개수를 의미한다.
C# 전체 코드 보기
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using Hippo;
namespace CPUUsages
{
public partial class Form1 : Form
{
PerformanceCounter p;
SeriesList slist;
Public Sub New()
MyBase.New
InitializeComponent
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
Me.timer1.Interval = 1000
Me.timer1.Start
p = New PerformanceCounter
p.CategoryName = "Processor"
p.CounterName = "% Processor Time"
p.InstanceName = "_Total"
slist = New SeriesList
slist.SeriesCollection.Add(New Series)
slist.AxisFactor.YAxis.Line.LineColor = Color.DarkGreen
slist.AxisFactor.XAxis.Line.LineColor = Color.DarkGreen
slist.GraphArea.Grid.GridLine.LineColor = Color.Green
slist.AxisFactor.YAxis.ForeColor = Color.Green
slist.AxisFactor.XAxis.ForeColor = Color.Green
slist.AxisFactor.YAxis.IsShowTick = false
slist.AxisFactor.YAxis.IsVisibleFigures = false
slist.AxisFactor.XAxis.IsShowTick = false
slist.AxisFactor.XAxis.IsVisibleFigures = false
Me.hHippoChart1.Designer.BackColor = Color.Black
Me.hHippoChart1.Designer.IsGradation = false
slist.AxisFactor.YAxis.IsAutoSetting = false
slist.AxisFactor.YAxis.MaxUnitValue = 100
slist.AxisFactor.YAxis.MinUnitValue = 0
slist.AxisFactor.YAxis.Interval = 10
Me.hHippoChart1.DesignType = ChartDesignType.Flat
Me.hHippoChart1.SeriesListDictionary.Add(slist)
End Sub
Private Sub timer1_Tick(ByVal sender As Object, ByVal e As EventArgs)
Dim thisCpuvalue As Single = p.NextValue
Me.hHippoChart1.DrawRealTimeChart(thisCpuvalue, 50)
End Sub
End Class
End Namespace