huong dan ve do thi voi vc#

Upload: tran-trong

Post on 29-Oct-2015

79 views

Category:

Documents


0 download

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)