C#写上位机中写曲线图的知识点(VS2019-WPF)
最近在写一个上位机,为了与下位机软件串口进行通信以及一些数据的形象显示,做到曲线图这一块的时候出现了一些问题,我用的是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)的更多相关文章
- C#上位机中ZedGraph控件的使用
上位机程序控制PLC模拟量通道输出周期性正弦波信号,并采集所造成改变的模拟量输入信号,并绘制数据变化曲线. 界面如图: 最后测试效果如图: 代码: using System; using System ...
- C# MODBUS协议 上位机(转)
源:C# MODBUS协议 上位机 C#写了一款上位机监控软件,基于MODBUS_RTU协议. 软件的基本结构: 采用定时器(Timer控件)为时间片. 串口采用serialPort1_DataRec ...
- VC++编写简单串口上位机程序
VC++编写简单串口上位机程序 转载: http://blog.sina.com.cn/s/articlelist_1809084904_0_1.html VC++编写简单串口上位机程序 串口通信 ...
- C#做一个简单的进行串口通信的上位机
C#做一个简单的进行串口通信的上位机 1.上位机与下位机 上位机相当于一个软件系统,可以用于接收数据.控制数据.即可以对接收到的数据直接发送操控命令来操作数据.上位机可以接收下位机的信号.下位机是 ...
- C# 上位机的USB设备拔插检测
我们做USB通信时,通信成功后,往往要检测USB设备的拔插状态,这里就USB拔插进行一下说明. 参考:https://www.imooc.com/article/17438 先说明一下,我这里只是用C ...
- 【安富莱专题教程第4期】SEGGER的J-Scope波形上位机软件,HSS模式简单易用,无需额外资源,也不需要写目标板代码
说明:1.在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示.通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐.本期专题为大家讲 ...
- 在mybatis中写sql语句的一些体会
本文会使用一个案例,就mybatis的一些基础语法进行讲解.案例中使用到的数据库表和对象如下: article表:这个表存放的是文章的基础信息 -- ------------------------- ...
- 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...
- x01.os.12: 在 windows 中写 OS
在 windows 中写操作系统,需要一系列的辅助工具.在此,要感谢川谷秀实!所有工具,都在 z_tools 文件夹中.有了大师的帮助,不妨也来尝试在 windows 中写一把 OS. 源代码及工具可 ...
随机推荐
- Spring MVC-视图解析器(View Resolverr)-多重解析器(Multiple Resolver)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_multiple_resolver_mapping.htm 说明:示例基于Spri ...
- 实现MVC.NET 5的国际化
实现国际化有三种做法: 创建资源文件. 每种语言设置一套单独的View. 1 + 2. 通常而言,第一种方法的可维护性是最高的.因为随着项目的规模的扩大,为每种语言设置一套单独的View,前期的工作量 ...
- HDU 4526
DP. 设状态dp[i][j]表示j辆车后还剩余i个人的花费,枚举一个车的座位k,加上剩下人数i,注意i+k不能超过n,就很容易dp了. #include <iostream> #incl ...
- SegmentFault 巨献 1024 程序猿游戏「红岸的呼唤」第一天任务攻略
今天一不小心在微博上看到了SegmentFault的一条微博: 眼看今天就要过去了,那在这里说一下我的解题过程(事实上大家都知道了吧-=). 高速传送门:http://segmentfault.com ...
- 零基础学python-2.17 文件、open()、file()
今天我们来说说文件,以及跟文件有关的内建函数open和file 首先我们在python的根文件夹下建一个名为"123"的txt文本文件 文件中面我们输入一些文本 watermark ...
- Extjs 3 控制Grid某行某列不可编辑
var cmGoodsFee = new Ext.grid.ColumnModel([rmGoodsFee, { header : "id", tooltip : "id ...
- luogu3157 动态逆序对
题目大意 给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数. 思路 #include <cstdio> #include <c ...
- 如何注释ascx中的代码
https://forums.asp.net/t/1783252.aspx?Commented+out+ascx+code+not+treated+as+commented+out+ <%-- ...
- SqlServer还原步骤
SqlServer还原步骤 2009-09-05 10:32:12| 分类: 数据库|字号 订阅 1 . 删除原有数据库 新建数据库 hywlxt 2. 在master 中新建存储过程 k ...
- 格伦布编码——rice编码无非是golomb编码M为2^x的特例
格伦布编码 格伦布编码是一种无失真资料压缩方法,由数学家所罗门·格伦布在1960年代提出. Rice编码 Robert F. Rice提出Rice 编码,是以哥伦布编码为基础做改良而更简易的前置码.R ...