c# chart控件添加边界值线条以及扩展性功能

本文介绍了如何利用C#的Chart控件扩展其功能,包括展示最大值、最小值、平均值的边界线条,以及在鼠标移到数据点时显示竖线和tooltip数据。通过Stripline添加最大值线条,并通过HitTest实现数据点检测,以精确绘制跟随鼠标的竖线。详细解决方案和代码示例展示了利用微软Chart控件的可定制性来提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一致在开发能源平台,平台中很多能耗数据都是通过使用微软的chart控件进行图形呈现的。考虑到要给用户更为直观的呈现效果,需要对原有控件的功能进行扩展。微软chart控件没有第三方样chart样式炫酷,但是胜在可定制性强,中文手册详细,很多效果能够自己写出来。

  主要实现功能:1.最大值,最小值,平均值展示   2.鼠标移动到数据点绘制竖线,用tooltip的方式展示数据

  最终呈现效果如图:

解决方案:

(1)最大值,最小值,平均值呈现

  之前在网上找了好久都没有想要的效果,第三方控件往往都能直接设置。最开始我的解决方法是在ChartArea中添加单独的series展示最值,但是呈现效果不佳:

  在看了微软的技术手册后,发现可以在ChartArea中添加Stripline实现。以插入最大值线条为例,代码如下:

 //最大线条
                        double max = ammeter.Max();
                        StripLine stripMax = new StripLine();
                        stripMax.Text = string.Format("最大:{0:F}", max);//展示文本
                        stripMax.BackColor = Color.FromArgb(208, 109, 106);//背景色
                        stripMax.Interval = 0;//间隔
                        stripMax.IntervalOffset = max;//偏移量
                        stripMax.StripWidth = 0.001;//线宽
                        stripMax.ForeColor = Color.White;//前景色
                        stripMax.TextAlignment = StringAlignment.Near;//文本对齐方式
                        chartInfo.ChartAreas["ammeter"].AxisY.StripLines.Add(stripMax);//添加到ChartAreas中

(2)实现鼠标移动到数据点绘制竖线,用tooltip的方式展示数据

  chart中可以对画图区域使用HitTest进行数据点检测,之前的方案是在鼠标移动的过程中对当前鼠标的坐标区域(x为当前坐标,y为画图区域的高 )进行数据检测,移动的过程中绘制跟随鼠标的线条。实现后发现效果并不是很好,HitTest在数据点周围的series都会判定为数据点,所以线条一直在绘制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值