C# 通过Queue消息队列对Chart数据绑定

Chart绑定的原理是通过两个数组X和Y对Chart中Point的坐标进行赋值,其中X代表横坐标,Y代表纵坐标。

uint[] x_value = new uint[3];
uint[] y_value = new uint[3];
x_value[0] = 1;
x_value[1] = 2;
x_value[2] = 3;
y_value[0] = 20;
y_value[1] = 22;
y_value[2] = 25;

this.chart1.Series[0].Points.DataBindXY(x_value, y_value);

以上代码将在chart1中绘制3个点,坐标分别为1,20  2,22  3,25.

C# 通过Queue消息队列对Chart数据绑定_第1张图片

 

实时绘制图形时,很难做到把所有的数据都绘制出来,往往只是绘制最新的N个点。

这里用Queue消息队列代替普通的数组,因为Queue可以调用Enqueue和Dequeue方法对消息队列进行赋值,当队列长度到达N+1,只需调用Dequeue方法即可将队列最前方数据删除,从而形成最新的队列。

static Int32 Queue_Len = 20;
private Queue Vol_X = new Queue(Queue_Len);
private Queue Vol_Y = new Queue(Queue_Len);

if (++X_Index <= Queue_Len)
{
    Vol_X.Enqueue(X_Index);
}
else
{
    X_Index = Queue_Len+1;
}

Random rd = new Random();
float vm = rd.Next(0, 100);

Vol_Y.Enqueue(vm);
if (Vol_Y.Count > Queue_Len)//当数据长度大于Queue_Len,删除第一位
{
    Vol_Y.Dequeue();
}

this.chart1.Series[0].Points.DataBindXY(Vol_X, Vol_Y);

这样,将一直绘制最新的20个点:

C# 通过Queue消息队列对Chart数据绑定_第2张图片

 

你可能感兴趣的:(C#)