最近一段时间, 有用到WinForm的chart控件, 主要是做了一个纺织行业的验布数据的图表显示, 比如长度值和重量值的曲线绘制,
以此图表, 相关人员则可判断哪些检验数据是错误的, 后来, 又安排我检查一个保安人员夜间巡查情况的事, 我就又开始使用chart控件
了, 折腾了大半天, 也没弄好, 周日在家, 不死心, 又反复调试, 终于功夫不负有心人, 成功自定义显示了”X轴”, 在此写下来, 以供以后参考!
效果见图, 比如2022/11/2这天, 1点多, 3点多巡逻了, 留下了巡检记录数据, 这个是厂里的巡更棒, 市面上很常见, 可以下载到电脑上
下面是代码(主要是思想, 算是DEMO)
private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("patrolDate", typeof(DateTime)); dt.Columns.Add("patrolTime", typeof(float)); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/2"), 0.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/2"), 3.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/3"), 1.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/3"), 4.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/8"), 1.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/8"), 4.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/22"), 1.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/22"), 4.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/30"), 1.3F }); dt.Rows.Add(new object[] { DateTime.Parse("2022/11/30"), 4.3F }); for (int i = 0; i < dt.Rows.Count; i++) { chart1.Series[0].Points.AddXY(dt.Rows[i]["patrolDate"], dt.Rows[i]["patrolTime"]); //设置X轴字体绘制角度 chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 90; CustomLabel label = new CustomLabel(); label.Text = ((DateTime)dt.Rows[i]["patrolDate"]).ToShortDateString(); //定义自定义标签的位置, 显示标签的关键代码 label.FromPosition = ((DateTime)dt.Rows[i]["patrolDate"]).ToOADate() - 1; label.ToPosition = ((DateTime)dt.Rows[i]["patrolDate"]).ToOADate() + 1; //显示网格线 label.GridTicks = GridTickTypes.Gridline; chart1.ChartAreas[0].AxisX.CustomLabels.Add(label); } }
主要容易失败的地方, 在于X轴标签显示上, 网上有贴子说日期时间类型不能在此使用, 是不对的, 需要设置
CustomLabel的FromPosition和ToPosition属性, 这才是自定义轴标签的关键所在, 这个是在Chart控件的
ChartAreas集合的Axes集合中的X axis中定义的, chart控件比较庞大, 需要慢慢消化.
原文地址:http://www.cnblogs.com/captionAmazing/p/16862441.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性