C# Chart控件标记问题详解

作者:IC00 时间:2023-01-23 03:37:35 

前言

在做项目的时候,遇到一个需求,需要我对Chart图标标记数据正在运行,实现数据可视化,因为我们的表格是隐藏Y轴的刻度是看不到数据值的,于是采用数据标记的形式来动态展示值,那么我们应该怎么去处理这个问题呢,阅读这篇文章吧,我们一起学习学习一下,创作不易,大家点赞关注评论收藏,你的点赞和关注是我创作的动力,也是我持续不断学习的动力。谢谢大家啦!!!

效果展示

先来展示一下我们的效果,看看是怎么回事,在看看有没有欲望往下面看看文章,主要是对Chart图的标记问题做了处理,我们使用了Chart控件的一个对Point点的设置实现这种动态展示Chart图的标记,两张图的效果对比非常明显,对于我们 有这样的需求的项目可以采用这样的形式,或者采用另一种的鼠标点击弹出提示,下篇文章应该会写出来和大家一起学习一下,大家多点赞,我创作的动力更强。

C# Chart控件标记问题详解

C# Chart控件标记问题详解

解决方法

我们来看一下解决的方法,我使用Chart控件里面对Point的MarkerStyle 进行标记,实现这样的方式,对MarkerStyle 的样式设置标记大小,标记颜色,以及标记展示的值,使用的是随机函数产生的数据,生成的表格,对表格的数据添加,然后在对这个点进行标记,只标记最新是使用标一个去一个的方式,就是我把最新的标记好,把上一个去掉标记,哪个按钮我只给了一个状态值让它去判断是最新还是一直标记,也可以加个状态不标记。后面贴了代码你们可以后期自己二次更新。

C# Chart控件标记问题详解

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace TestIC00
{
   public partial class Form2 : Form
   {
       public Form2()
       {
           InitializeComponent();
       }

private void Form2_Load(object sender, EventArgs e)
       {

}
       public int index = 0;
       public bool flag = false;
       private void button1_Click(object sender, EventArgs e)
       {
           timer1.Enabled = !timer1.Enabled;//对定时器的操作,点击打开或关闭定时器,主要是实现一秒传一个值
       }
       private void timer1_Tick(object sender, EventArgs e)
       {
           Random random = new Random();
           this.chart1.ChartAreas[0].AxisX.MajorGrid.Interval = 1;//网格间隔
           this.chart1.ChartAreas[0].AxisX.MinorGrid.Interval = 1;
           this.chart1.ChartAreas[0].AxisY.MajorGrid.Interval = 1;//网格间隔
           this.chart1.ChartAreas[0].AxisY.MinorGrid.Interval = 1;
           this.chart1.ChartAreas[0].AxisX.LabelStyle.Interval = 1;//设置X轴的值的间隔大小
           this.chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Gray;//设置X轴网格线颜色
           this.chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gray;//设置Y轴网格线颜色
           chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = true;//启动滚动条
           this.chart1.ChartAreas[0].AxisY.LabelStyle.Enabled = false;//使Y轴的刻度隐藏
           chart1.ChartAreas[0].AxisX.ScaleView.Scroll(System.Windows.Forms.DataVisualization.Charting.ScrollType.Last);//启用视图实现数据滚动
           int value = random.Next(0, 20);//产生随机数进行赋值
           chart1.Series[0].Points.AddY(value);//对折线图添加数据
           if(flag)//判断标记,如果是true表示只标记最新,需要去掉前面的一个值
           {
               this.chart1.Series[0].Points[index].MarkerStyle = MarkerStyle.Circle;//设置标记的形状为圆形
               this.chart1.Series[0].Points[index].MarkerColor = Color.Red;//形状颜色设置
               this.chart1.Series[0].Points[index].MarkerBorderWidth = 3;//形状大小设置
               this.chart1.Series[0].Points[index].MarkerSize = 10;//设置我们展示标记的大小
               this.chart1.Series[0].Points[index].Label = "功能:" + this.chart1.Series[0].Name + "\r\n" + "值:" + value.ToString();//对标记展示的值
               this.chart1.Series[0].Points[index].IsValueShownAsLabel = true;//展示标记
               this.chart1.Series[0].Points[index-1].MarkerBorderWidth = 0;//改前一个标记的大小
               this.chart1.Series[0].Points[index - 1].MarkerSize = 0;//形状大小
               this.chart1.Series[0].Points[index - 1].Label = "";//展示数据
               this.chart1.Series[0].Points[index - 1].IsValueShownAsLabel = false;//不展示
           }
           else//对数据一直标记
           {
               this.chart1.Series[0].Points[index].MarkerStyle = MarkerStyle.Circle;
               this.chart1.Series[0].Points[index].MarkerColor = Color.Red;
               this.chart1.Series[0].Points[index].MarkerBorderWidth = 3;
               this.chart1.Series[0].Points[index].MarkerSize = 10;
               this.chart1.Series[0].Points[index].Label = "功能:" + this.chart1.Series[0].Name + "\r\n" + "值:" + value.ToString();
               this.chart1.Series[0].Points[index].IsValueShownAsLabel = true;
           }
          //也可以加一种状态是什么也不标记,你们自己对那个状态值的处理就可以啦
           index++;
       }

private void button2_Click(object sender, EventArgs e)//只标记最新按钮
       {
           flag = !flag;//对状态值的改变,我就使用了两种状态,你们可以改
       }
   }
}

来源:https://juejin.cn/post/7132818750155259912

标签:C#,Chart,控件,标记
0
投稿

猜你喜欢

  • SpringBoot项目的测试类实例解析

    2021-05-29 20:35:04
  • Java算法比赛常用方法实例总结

    2023-11-28 07:15:26
  • Java实现简单酒店管理系统

    2023-02-22 12:41:21
  • C#通过链表实现队列的方法

    2023-06-19 15:14:17
  • Android中RecyclerView 滑动时图片加载的优化

    2021-07-29 09:58:12
  • Java实现导出word表格的示例详解

    2023-01-02 21:36:48
  • 提升java开发效率工具lombok使用争议

    2022-06-22 03:08:18
  • 解决mybatis #{}无法自动添加引号的错误

    2023-09-21 11:45:02
  • 详解springmvc常用5种注解

    2023-03-27 15:15:43
  • android实现倒计时动态圈

    2023-09-15 03:18:33
  • Android实现水波纹效果

    2022-12-11 01:47:16
  • C#中数组段用法实例分析

    2022-06-11 23:08:05
  • Android-SPI学习笔记

    2022-05-15 17:35:33
  • 一篇文章带你深入了解Java线程池

    2021-11-22 21:59:42
  • Android基础之startActivityForResult()的用法详解

    2022-05-28 03:37:29
  • Spring Boot 员工管理系统超详细教程(源码分享)

    2022-04-18 13:32:26
  • Android使用 Retrofit 2.X 上传多文件和多表单示例

    2023-08-06 03:48:25
  • RocketMQ生产者一个应用不能发送多个NameServer消息解决

    2022-05-18 15:56:11
  • Java接口和抽象类有什么区别

    2021-08-21 07:01:18
  • 关于C++运算符重载的一些困惑详解

    2023-05-25 15:33:20
  • asp之家 软件编程 m.aspxhome.com