(接上帖)
绘图控件的相关设置
简略监测区域图表
原项目使用的实时绘图逻辑是“当绘制完十个点后,其后每画一个新点,就将第一个点删除”从而达成实时绘图的效果。
但是这个逻辑很显然会导致每次每个图表最多只能储存十个数据,所以我打算通过修改绘图控件设置,而不是通过删减数据点来达成实时绘图的功能。

还是拿温度来举例:这里绘图控件的设置包括三部分,曲线(series1),横坐标轴(dateTimeAxis)和纵坐标(leftAxis)。
经过阅读相应类内的参数说明,经过多次尝试不同的参数和参数值,我最后选择修改了如下参数:
曲线:
MarkerType:影响绘图点的形状,设置成圆形就行。
Smooth:影响图线连接是纯折线还是光滑曲线,这里选择光滑,图像美观一些。
横坐标轴:
MaximumRange:影响坐标轴最多显示的数值跨度,修改这一项数值可以调整同一时间在图表中最多出现的点的个数。通过不断修改这个值,我最后让图表在同一时间最多同时存在10个左右的绘图点,多于十个的话,旧的数据点将会不再显示于图表之中,从而达到实时绘图的功能,并且还可以通过鼠标右键拖动图表的方式观察图表的历史曲线,不显示在实时图表内的点并没有被删除。
StringFormat:借鉴了(https://blog.csdn.net/weixin_42930928/article/details/81984549)这一文章中的设置,通过设置格式来最后达到坐标轴显示“XX分XX秒”的效果,而不是之前恐怖的一大串日期时间。
纵坐标轴
Position:影响坐标轴在图表的位置,设置在左边,但是实际上好像并不需要这样,默认的纵坐标都在左边。
MaximumPadding,MinimumPadding:影响图表上下的空白缓冲区域,这个参数还比较重要,越大的值意味着图像在上下区域会有更大的空白,即整个图像经过了量程拉伸,作用是让点和曲线能更更靠中央显示,避免了光滑曲线后超出量程之类的情况发生。
Majorstep:影响坐标轴上一大格的间隔,设置为1,则意味着坐标轴的大格为1,对于不同的传感器数值要设置不同的值,从而使坐标轴上表的数字不至于过密或过疏。
MaximumRange,MinimumRange:同横坐标的相应参数,需要具体传感器具体设置。


如图为修改控件参数前后图像的变化,可见图形的显示效果好了很多,图像不再在顶上和底下反复横跳,或者体温那里纵坐标的唯一数字标识是50了,增强了可读性。
重点检测区域图表
重点监测区域图表的设置也同样进行了上述设置,增加的更多是美观方面的设置。

MarkerStrokeThickness:影响绘图点的大小
StrokeThickness:影响绘图曲线的粗细程度
Color:影响绘图曲线的颜色
MajorGridlineStyle,MinorGridlineStyle:设置坐标轴中每一大格网格线和每一小格网格线的样式,这里选择大格网格线为实线,小格网格线为虚线
MajorGridlineColor,MinorGridlineColor:影响各网格线的颜色
重点监测区域的图表侧重于图像的醒目程度和读取数据的精度
总结
实在是第一次接触C#和图形界面的设计,按照课程其实我已经一年都没有怎么写过很正经的代码了。这次的嵌入式系统实践的项目确实是全面考查了资源搜索和自学能力,并且考察的方面也是非常广泛,从市场调研到需求分析到架构设计到硬件设计到软件设计到测试改进,是一次不小的挑战。到头来,写了学习笔记才发现自己其实也就做了这么些东西,但是当时确实是举步维艰。
代码写的并不太好,希望大家多包容。希望以后还能有更多这种锻炼的机会,以及希望明日嵌入式期末考试能够运气好一点。(安详
本文介绍了一种使用C#绘图控件实现实时数据绘图的方法,通过对绘图控件参数的调整,如曲线平滑度、坐标轴范围及格式等,实现了数据点的实时更新而不删除历史数据,同时提高了图像的美观性和可读性。
&spm=1001.2101.3001.5002&articleId=106891979&d=1&t=3&u=25effceb898a4997afbcdc9de8a8012a)
1106

被折叠的 条评论
为什么被折叠?



