huong dan ve do thi voi vc#
TRANSCRIPT
-
Ng ng Hin Hc Vin Hi Qun 2011
1
HNG DN V TH VI
VISUAL STUDIO C# 2008
Hm nay, ngy 05/08/2011 ng l 1 ngy bun nh ch cht ( con ch nh bn cnh
b nu d cy ^_^ ), li ngi vit TUT cho anh em engineer mi vo ngh.
1. Gii thiu
Trong TUT u ti hng dn cc bn giao tip COM vi vi iu khin. Giao
tip nh vy coi nh l xong ri. Nhng m chng ta thy y nhn c d liu
tt ri nhng phi v c Graph th mi gii quyt c bi ton.
Trong 1 ln tnh c thy 1 ng anh v th vi VB6 nhn thy m thm c ngh
ng ny tht l P-r-fc-sn-n. Nhng sau khi tm hiu th ha ra ng ta si
phn mm v teachar g ( hic khng nh! ). Ti mi mon men ln mng tm
cho C# th c cng kh nhiu cng c mnh m cho v th, nhn rt chuyn
nghip c nh l dng Excel v y. K n l c ZedGraph, Component one
Trong khun kh ti liu ny ti s c gng hng dn chi tit v th vi
ZedGraph, tuy khng p v pro bng Component One nhng l cng c mnh v
code nn rt d lm ch code ca mnh.
Hi vng ti liu s gip ch c anh em mi vo ngh chi vi iu khin v tp
code vi C#
2. To Project
- File / New / Project.
- V t tn cho n
-
Ng ng Hin Hc Vin Hi Qun 2011
2
- s dng c control ZedGraph chng ta phi add n vo Toolbox bng cch
- Hin ra 1 ca s mi v bn phi nhn Brownse ch ra ng dn n
ZedGraph.dll
Nhp phi chut vo
khu vc trng, chn
Choose Items.
-
Ng ng Hin Hc Vin Hi Qun 2011
3
-
Ng ng Hin Hc Vin Hi Qun 2011
4
- Khi ToolBox c Control nh bn di l OK ri.
- Sau khi ko th v thm cc button c nh hnh bn di.
- Vy l phn giao din l n ri, by gi ko thm timer ra, mc ch to thi
gian chy trong phn th.
Em n y, ch
vic ko th vo
Form l OK
-
Ng ng Hin Hc Vin Hi Qun 2011
5
3. Vit CODE
- Trc ht thm th vin vo
// ch : Khai bo th vin ny
using ZedGraph;
- Khai bo trc Form1
// Khai bo 1 bin dng cho timer, chy ct thi gian tnh bng ms
int tickStart = 0;
public Form1()
{
InitializeComponent();
}
- p vo tiu ly s kin Load v xem code Form1_Load bn di.
private void Form1_Load(object sender, EventArgs e)
{
// khi khi ng s c chy
GraphPane myPane = zedGraphControl1.GraphPane; // Khai bo sa
dng Graph loi GraphPane;
// Cc thng tin cho th ca mnh
myPane.Title.Text = "y l title trn cng, bn thay i cho ph
hp vi chng trnh";
myPane.XAxis.Title.Text = "Thi gian ct X";
myPane.YAxis.Title.Text = "Tiu ct Y";
// nh ngha list v th. cc bn hiu r c ch lm
vic y khai bo 2 list im 2 ng th
RollingPointPairList list1 = new RollingPointPairList(1200);
Timer th hin y l c.
-
Ng ng Hin Hc Vin Hi Qun 2011
6
// y s dng list vi 1200 im (c th thm nhiu liu ti
y)
RollingPointPairList list2 = new RollingPointPairList( 1200 );
// dng di l nh ngha curve v.
LineItem curve1 = myPane.AddCurve("ng 1", list1, Color.Red,
SymbolType.None); // Color mu , c trng cho ng 1
// SymbolType l kiu biu th th : im, ng trn, tam
gic ....
LineItem curve2 = myPane.AddCurve("ng 2", list2, Color.Blue,
SymbolType.None); // Color mu Xanh, c trng cho ng 2
// v d khong cch l 50ms 1 ln
timer1.Interval = 50;
//timer1.Enabled = true; // Kch hot cho timer1
//timer1.Start(); // Chy Timer1
// nh hin th cho trc thi gian (Trc X)
myPane.XAxis.Scale.Min = 0; // Min = 0;
myPane.XAxis.Scale.Max = 30; // M = 30;
myPane.XAxis.Scale.MinorStep = 1; // n v chia nh nht 1
myPane.XAxis.Scale.MajorStep = 5; // n v chia ln 5
// Gi hm xc nh c trc
zedGraphControl1.AxisChange();
// Khi ng timer v v tr ban u
tickStart = Environment.TickCount;
}
// tin cho vic s dng chng ta s xy dng 1 hm draw phc v cho vic
v th
public void draw(double setpoint1, double setpoint2) // v d ny
chng ta c 2 ng
{
if (zedGraphControl1.GraphPane.CurveList.Count
-
Ng ng Hin Hc Vin Hi Qun 2011
7
if (list1 == null)
return;
if (list2 == null)
return;
// Time c tnh bng ms
double time = (Environment.TickCount - tickStart) / 1000.0;
// Tnh ton gi tr hin th
// Mun hin th ci g th ch vic thay vo setpointx
list1.Add(time, setpoint1); // y chnh l hm hin th d liu
ca mnh ln th
// list2.Add(time, setpoint2); // y chnh l hm hin th d
liu ca mnh ln th
// Ko v setpoint2 m th v th hnh sin vi 3 seconds per
cycle
list2.Add(time, Math.Sin(2.0 * Math.PI * time / 3.0));
// on chng trnh thc hin v th
Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale;
if (time > xScale.Max - xScale.MajorStep)
{
//xScale.Max = time + xScale.MajorStep;
// xScale.Min = xScale.Max - 30.0; // Timer chy qua 30 s t
ng dch chuyn tnh tin sang tri
// Nu ko mun dch chuyn m chy bt u t 0 th :
xScale.Min = 0;
if (button3.Text == "COMPACT")
{
xScale.Max = time + xScale.MajorStep;
xScale.Min = xScale.Max - 30.0;
}
else
{
xScale.Max = time + xScale.MajorStep;
xScale.Min = 0;
}
}
// V th
zedGraphControl1.AxisChange();
// Force a redraw
zedGraphControl1.Invalidate();
}
gi hm v chng ta s kch hot cho Timer1 chy, p vo Timer1 ly s kin,
sau vit code nh code tham kho bn di.
private void timer1_Tick(object sender, EventArgs e)
{
draw(5,20);
}
-
Ng ng Hin Hc Vin Hi Qun 2011
8
- cc bn hiu hn v c ch lm vic, ti thm cc Button iu khin mc
ch ca n l : Cho m Timer bt u v th bng START, cho hin th 2
dng chy thi gian bng button COMPACT v thot chng trnh bng Exit
Cc bn c th tham kho code mu.
int check = 0; // cho khi nhn Start l s bt u t im 0
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "START")
{
timer1.Enabled = true;
button1.Text = "STOP";
// Khi ng timer v v tr ban u
if (check == 0)
{
tickStart = Environment.TickCount;
check = 1;
}
}
else
{
timer1.Enabled = false;
button1.Text = "START";
}
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void button3_Click(object sender, EventArgs e)
{
if (button3.Text == "COMPACT") button3.Text = "SROLL";
else button3.Text = "COMPACT";
}
private void tcGiToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
}
4. Full CODE tham kho
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
-
Ng ng Hin Hc Vin Hi Qun 2011
9
// ch : Khai bo th vin ny
using ZedGraph;
namespace DOTHI_HIENCLUBVN
{
public partial class Form1 : Form
{
// Khai bo 1 bin dng cho timer, chy ct thi gian tnh bng ms
int tickStart = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// khi khi ng s c chy
GraphPane myPane = zedGraphControl1.GraphPane; // Khai bo sa
dng Graph loi GraphPane;
// Cc thng tin cho th ca mnh
myPane.Title.Text = "y l title trn cng, bn thay i cho ph
hp vi chng trnh";
myPane.XAxis.Title.Text = "Thi gian ct X";
myPane.YAxis.Title.Text = "Tiu ct Y";
// nh ngha list v th. cc bn hiu r c ch lm
vic y khai bo 2 list im 2 ng th
RollingPointPairList list1 = new RollingPointPairList(1200);
// y s dng list vi 1200 im (c th thm nhiu liu ti
y)
RollingPointPairList list2 = new RollingPointPairList( 1200 );
// dng di l nh ngha curve v.
LineItem curve1 = myPane.AddCurve("ng 1", list1, Color.Red,
SymbolType.None); // Color mu , c trng cho ng 1
// SymbolType l kiu biu th th : im, ng trn, tam
gic ....
LineItem curve2 = myPane.AddCurve("ng 2", list2, Color.Blue,
SymbolType.None); // Color mu Xanh, c trng cho ng 2
// v d khong cch l 50ms 1 ln
timer1.Interval = 50;
//timer1.Enabled = true; // Kch hot cho timer1
//timer1.Start(); // Chy Timer1
// nh hin th cho trc thi gian (Trc X)
myPane.XAxis.Scale.Min = 0; // Min = 0;
myPane.XAxis.Scale.Max = 30; // M = 30;
myPane.XAxis.Scale.MinorStep = 1; // n v chia nh nht 1
myPane.XAxis.Scale.MajorStep = 5; // n v chia ln 5
// Gi hm xc nh c trc
zedGraphControl1.AxisChange();
// Khi ng timer v v tr ban u
tickStart = Environment.TickCount;
}
-
Ng ng Hin Hc Vin Hi Qun 2011
10
// tin cho vic s dng chng ta s xy dng 1 hm draw phc v
cho vic v th
public void draw(double setpoint1, double setpoint2) // v d ny
chng ta c 2 ng
{
if (zedGraphControl1.GraphPane.CurveList.Count xScale.Max - xScale.MajorStep)
{
//xScale.Max = time + xScale.MajorStep;
// xScale.Min = xScale.Max - 30.0; // Timer chy qua 30 s t
ng dch chuyn tnh tin sang tri
// Nu ko mun dch chuyn m chy bt u t 0 th :
xScale.Min = 0;
if (button3.Text == "COMPACT")
{
xScale.Max = time + xScale.MajorStep;
xScale.Min = xScale.Max - 30.0;
}
else
{
-
Ng ng Hin Hc Vin Hi Qun 2011
11
xScale.Max = time + xScale.MajorStep;
xScale.Min = 0;
}
}
// V th
zedGraphControl1.AxisChange();
// Force a redraw
zedGraphControl1.Invalidate();
}
private void timer1_Tick(object sender, EventArgs e)
{
draw(5,20);
}
int check = 0; // cho khi nhn Start l s bt u t im 0
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "START")
{
timer1.Enabled = true;
button1.Text = "STOP";
// Khi ng timer v v tr ban u
if (check == 0) { tickStart = Environment.TickCount; check = 1; }
}
else
{
timer1.Enabled = false;
button1.Text = "START";
}
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void button3_Click(object sender, EventArgs e)
{
if (button3.Text == "COMPACT") button3.Text = "SROLL";
else button3.Text = "COMPACT";
}
private void tcGiToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
}
}
}
5. Mt s hnh nh v giao din
-
Ng ng Hin Hc Vin Hi Qun 2011
12
Hnh trn l thi gian chy ( th dch tnh tin), hnh bn di bt u t 0 (dn li)