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.

 

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

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

static Int32 Queue_Len = 20;
private Queue<float> Vol_X = new Queue<float>(Queue_Len);
private Queue<float> Vol_Y = new Queue<float>(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个点:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值