最近在写一个上位机,为了与下位机软件串口进行通信以及一些数据的形象显示,做到曲线图这一块的时候出现了一些问题,我用的是VS2019(个人不能吐槽VS2019新版本,因为平时也很少用VS,下载的时候就直接下载VS2019,用着还好吧,就是出问题得自己去试,在网上找解决办法貌似很难找)

废话不多说了,开始讲啦

因为我用WPF写的,它的WPF控件里面不像WFC中直接有chart控件,可以直接拿来用,如下图所示为WPF的控件

然后我使用DynamicDataDisplay控件来做折线图的设计

(1)下载DynamicDataDisplay库文件(下载链接放到评论里面了)

(2)在创建的WPF项目的引用里面添加DynamicDataDisplay库文件(如下图所示)浏览按钮找到刚下载的库文件加载进去即可

(3)在XAML文件中先引入chart文件具体代码见下

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"
xmlns:local="clr-namespace:WPFSerialAssistant"
(4)然后在自己想要添加的地方写入chart的具体设计代码,我的代码如下,可做参考

<d3:ChartPlotter Name="plotter">
<d3:Header TextBlock.FontSize="20">
 图的名字
</d3:Header>
<d3:VerticalAxisTitle>Sine value</d3:VerticalAxisTitle>
<d3:HorizontalAxisTitle>Sine argument</d3:HorizontalAxisTitle>
</d3:ChartPlotter>
(5)有关数据绑定的问题,比如你现在要画折线图上面的点了,应该怎么操作?

在定义chart的时候定义了name属性,可以根据name属性在cs中进行数据的绑定来进行画点。

放一下我的代码哈

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.AddLineGraph(compositeDataSource, Colors.Goldenrod, 3);

// 变可见
plotter.FitToView();
---------------------

C#写上位机中写曲线图的知识点(VS2019-WPF)的更多相关文章

  1. C#上位机中ZedGraph控件的使用

    上位机程序控制PLC模拟量通道输出周期性正弦波信号,并采集所造成改变的模拟量输入信号,并绘制数据变化曲线. 界面如图: 最后测试效果如图: 代码: using System; using System ...

  2. C# MODBUS协议 上位机(转)

    源:C# MODBUS协议 上位机 C#写了一款上位机监控软件,基于MODBUS_RTU协议. 软件的基本结构: 采用定时器(Timer控件)为时间片. 串口采用serialPort1_DataRec ...

  3. VC++编写简单串口上位机程序

    VC++编写简单串口上位机程序   转载: http://blog.sina.com.cn/s/articlelist_1809084904_0_1.html VC++编写简单串口上位机程序 串口通信 ...

  4. C#做一个简单的进行串口通信的上位机

    C#做一个简单的进行串口通信的上位机   1.上位机与下位机 上位机相当于一个软件系统,可以用于接收数据.控制数据.即可以对接收到的数据直接发送操控命令来操作数据.上位机可以接收下位机的信号.下位机是 ...

  5. C# 上位机的USB设备拔插检测

    我们做USB通信时,通信成功后,往往要检测USB设备的拔插状态,这里就USB拔插进行一下说明. 参考:https://www.imooc.com/article/17438 先说明一下,我这里只是用C ...

  6. 【安富莱专题教程第4期】SEGGER的J-Scope波形上位机软件,HSS模式简单易用,无需额外资源,也不需要写目标板代码

    说明:1.在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示.通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐.本期专题为大家讲 ...

  7. 在mybatis中写sql语句的一些体会

    本文会使用一个案例,就mybatis的一些基础语法进行讲解.案例中使用到的数据库表和对象如下: article表:这个表存放的是文章的基础信息 -- ------------------------- ...

  8. 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串

    写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...

  9. x01.os.12: 在 windows 中写 OS

    在 windows 中写操作系统,需要一系列的辅助工具.在此,要感谢川谷秀实!所有工具,都在 z_tools 文件夹中.有了大师的帮助,不妨也来尝试在 windows 中写一把 OS. 源代码及工具可 ...

随机推荐

  1. 造成segment fault,产生core dump的可能原因

    1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界 b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符 c) 使用strcpy, strcat, spr ...

  2. P2330 [SCOI2005] 繁忙的都市 洛谷

    https://www.luogu.org/problem/show?pid=2330#sub 题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C ...

  3. JQuery获取select选中值和清除选中状态(转)

    1.获取值 var provinceSearch = $("#loc_province_search").find("option:selected").att ...

  4. 前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成相应的响应发送到客户端。前端控制器既可以使用Filter实现(Struts2采用这种方式),也可以使用Servlet来实现(spring MVC框架)。

    本文转自http://www.cnblogs.com/davidwang456/p/4090058.html 感谢作者 前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并 ...

  5. LA 4850 贪心

    感谢SF巨和WH巨的指导.. 首先,YY得到一个结论,罚值最大的最小值必定是按照截止时间排序得到的.然后,选一个任务插到其他位置,必定产生罚值最大值更大的情况,但有可能产生两个罚值最大情况和更小的情况 ...

  6. DirectX11 学习笔记6 - 使用D3DXMATH数学库的一个样例

    这个样例是在之前的样例基础上 .把之前d3dx10math数学库换成了最新的d3dxmath.长处就不说了.先上效果图 所有代码.以及效果文件 文件结构 所有代码: 依照上图的文件顺序 #pragma ...

  7. Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item

    本文为原创博客.出自http://blog.csdn.net/minimicall 到今天为止,搜芽的卖家版本号应该来说已经基本完毕.攻坚克难的一路过来.速度也控制的比較好. 项目过程进度 从任务分配 ...

  8. 欢聚时代校园招聘java开发一面经历

    收到yy短信通知笔试通过后隔天就一面了,面试时间是下午1点半,跟另外一个同学在1点半的时候已经到了目的酒店,发现面试都集中在一个大厅,摆了非常多桌椅,由不同的面试关在面试.等到2点多的时候才到我.先说 ...

  9. Struts2 自己定义下拉框标签Tag

    自己定义标签主要包含三个步骤: 1.编写java类,继承TagSupport类. 2.创建tld文件,影射标签名和标签的java类. 3.jsp页面引入tld. 样例:自己定义下拉框标签 假设页面上有 ...

  10. CodeForces - 743D Chloe and pleasant prizes

    Chloe and pleasant prizes time limit per test 2 seconds memory limit per test 256 megabytes input st ...