C#中使用DynamicDataDisplay来画多条颜色不一样的线

故事初衷:因为要发送几次数据做比较,所以不得已想办法改变每次画的线的颜色,然后利用赋一个RAGB颜色值的随机数来定义线条的颜色,具体代码见下:

private void ReceivedDataHandler(object obj)
        {
            //    接收缓存
            List<byte> recvBuffer = new List<byte>();
            recvBuffer.AddRange((List<byte>)obj);

            if (recvBuffer.Count == 0)
            {
                return;
            }
             //  生成几个随机数
            Random RandomNum_First = new Random(Guid.NewGuid().GetHashCode());
            System.Threading.Thread.Sleep(RandomNum_First.Next(50));
            Random RandomNum_Sencond = new Random(Guid.NewGuid().GetHashCode());
            //  为了在白色背景上显示,尽量生成深色,进行三色的赋值
            int int_Red = RandomNum_First.Next(256);
            int int_Green = RandomNum_Sencond.Next(256);
            int int_Blue = (int_Red + int_Green > 400) ? 0 : 400 - int_Red - int_Green;
            int_Blue = (int_Blue > 255) ? 255 : int_Blue;
            System.Drawing.Color color = System.Drawing.Color.FromArgb(int_Red, int_Green, int_Blue);
            //颜色数据格式的转换
            System.Windows.Media.Color color1 = System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B);
            // 必须应当保证全局缓冲区的数据能够被完整地备份出来,这样才能进行进一步的处理。
            shouldClear = true;
            string RecvData = Utilities.BytesToText(recvBuffer, receiveMode, serialPort.Encoding);
            string[] RecData = RecvData.Split(' ');
            this.Dispatcher.Invoke(new Action(() =>
            {
                if (showReceiveData)
                {
                    int N =RecData.Length;
                    double[] x = new double[N];
                    double[] y = new double[N];

                    for (int i = 0; i < N; i++)
                    {
                        x[i] =i;
                        y[i] = Convert.ToDouble(RecData[i]); 
                    }

                    // 创建数据源
                    var xDataSource = x.AsXDataSource();
                    var yDataSource = y.AsYDataSource();

                    CompositeDataSource compositeDataSource = xDataSource.Join(yDataSource);
                    //添加图像到plotter
                    plotter.AddLineGraph(compositeDataSource, color1, 1);
                    // 使可见
                    plotter.FitToView();

                }

                dataRecvStatusBarItem.Visibility = Visibility.Collapsed;
            }));

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值