记录|C# winform——Chart控件

news2024/9/24 19:22:53

目录

  • 前言
  • 一、重点关注
    • 1.1 Chart控件效果
    • 1.2 属性
      • 1.2.0 位置讲解
      • 1.2.1 Titles——标题集合
        • Text
        • ToolTip
      • 1.2 .2 Series——图表序列
        • ChartType
        • Legends——图例集合
  • 二、数据传入Chart控件
    • 2.1 如何传入数据?
    • 2.2 如果想限定每次展现的数据量怎么办?
  • 三、标注每个点的值
    • 3.1 如何在图表中标出每个点的值?
      • 可视化理解
      • 代码编写
      • 效果展示
  • 四、多个Chart控件演示【只是演示的时候方便】
  • 更新时间


前言

参考视频:
零基础C#教程037期 winform大数据Chart图形开发技巧


一、重点关注

1.1 Chart控件效果

在这里插入图片描述

1.2 属性

下图中的都是集合
在这里插入图片描述
比较重要的是:标题、序列、图例

1.2.0 位置讲解

在这里插入图片描述

1.2.1 Titles——标题集合

这个是Chart控件中的属性。是个集合。
集合中的每个成员都是控件。

Text

Titles集合里面的每个成员都是个Title控件。【如下图】
在这里插入图片描述
效果如下图:
在这里插入图片描述

ToolTip
  • 用于制作提示信息,需要鼠标移动上时触发【效果如下:】
    在这里插入图片描述

1.2 .2 Series——图表序列

在这里插入图片描述
序列,就是数据展示的形式。可以是柱状图、折线图、散点图。

ChartType
  • 选择序列展现的形式。有柱状图、折线图、散点图。
    在这里插入图片描述
Legends——图例集合
  • 这里配置图例的颜色和展现样式

二、数据传入Chart控件

2.1 如何传入数据?

  • 首先,需要在Form的Load()方法中进行配置。
  • 其次调用Point.Add()就可以实现添加数据
    简单的代码如下:
        private void Form1_Load(object sender, EventArgs e)
        {
            for(int i = 0; i < 10; i++)
            {
                Random rdom = new Random();
                chart1.Series[0].Points.Add(rdom.Next(0,101));
            }
        }
  • 运行后效果如下:
    在这里插入图片描述
  • 可以添加个Timer触发器,让图中的数据动态移动展示。【如下图】
    在这里插入图片描述

2.2 如果想限定每次展现的数据量怎么办?

如果数据如下图中,每次都在不断增加,但是窗体有限,结果很拥挤,需要对每次展现的数据量进行控制怎么办?
在这里插入图片描述
-下面代码是:每次只展示10个点的作用

        private void timer1_Tick(object sender, EventArgs e)
        {
            //当前图例展示的数据数量到到达10个时,将第一个移除,再添加一个点
            if (chart1.Series[0].Points.Count == 10)
            {
                chart1.Series[0].Points.RemoveAt(0);
            }

            Random rdom = new Random();
            chart1.Series[0].Points.Add(rdom.Next(0, 101));
        }
  • 效果如下:
    在这里插入图片描述

三、标注每个点的值

3.1 如何在图表中标出每个点的值?

可视化理解

先在Chart控件中,找到Series集合。
在里面找到Points集合【如下图】
在这里插入图片描述
在Point中创建个DataPoint对象。
XValues+YValues能指定展示的位置
Label:显示展示的点的值。
在这里插入图片描述

代码编写

基于上面的可视化理解后,下面的代码就好理解了。

        private void timer1_Tick(object sender, EventArgs e)
        {
            //当前图例展示的数据数量到到达10个时,将第一个移除,再添加一个点
            if (chart1.Series[0].Points.Count == 10)
            {
                chart1.Series[0].Points.RemoveAt(0);
            }

            Random rdom = new Random();
            int current_point = rdom.Next(0, 101);
            DataPoint dataPoint = new DataPoint();
            dataPoint.YValues = new double[] { current_point };
            dataPoint.Label = current_point.ToString();
            chart1.Series[0].Points.Add(dataPoint);
        }

效果展示

在这里插入图片描述

四、多个Chart控件演示【只是演示的时候方便】

  • 作用:演示的时候,用一组数据去控制多个Chart控件的展示。【代码如下:】
        private void timer1_Tick(object sender, EventArgs e)
        {
            for (int i = 1; i <= 4; i++) {
                Chart chartList = tableLayoutPanel1.Controls.Find("chart" + i.ToString(), true)[0] as Chart;
                //当前图例展示的数据数量到到达10个时,将第一个移除,再添加一个点
                if (chartList.Series[0].Points.Count == 10)
                {
                    chartList.Series[0].Points.RemoveAt(0);
                }

                Random rdom = new Random();
                int current_point = rdom.Next(0, 101);
                DataPoint dataPoint = new DataPoint();
                dataPoint.YValues = new double[] { current_point };
                dataPoint.Label = current_point.ToString();
                chartList.Series[0].Points.Add(dataPoint);
            }

        }

注意:tableLayoutPanel1.Controls.Find(“chart” + i.ToString(), true)——Find()方法中的true表示是找Panel中的子控件

  • 效果:
    在这里插入图片描述

更新时间

  • 2024.08.23:创建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2070826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主机安全-网络攻击监测

目录 概述暴力破解&#xff08;SSH爆破为例&#xff09;原理规则攻击模拟告警 端口扫描原理规则攻击模拟告警 流量劫持原理规则攻击模拟告警 参考 概述 本文介绍主机网络层面上的攻击场景&#xff0c;每种攻击场景举一个例子。监测方面以字节跳动的开源HIDS elkeid举例。 针对…

【2】搭建雅特力AT32F437ZMT OpenHarmony轻量系统开发环境

本文用于阐述如何搭建AT32F437ZMT OpenHarmony轻量系统开发环境开源组织地址&#xff1a;https://gitee.com/AT32437_OpenHarmony 1.AT-START-F437雅特力官方开发板相关资料 移植基于at32f437雅特力官方开发板AT-START-F437 AT-START-F437雅特力官方开发板相关资料 2.AT32F43…

采用不高于3次的勒让德多项式拟合原函数

利用勒让德多项式进行拟合的区域是[-1,1]&#xff0c;如果不是这个区域&#xff0c;比如是[a,b]&#xff0c;利用转化到[-1,1]。 参考以下例题计算系数 C语言代码如下 //用三阶的勒让德多项式进行拟合 #include<math.h> #include<stdio.h> #include "main.c…

智能控制,高效节能。ZLG致远电子能源智慧管理解决方案

面对楼宇及建筑群能源管理与设备控制的复杂需求&#xff0c;ZLG致远电子推出了一套能源智慧管理解决方案。该方案集设备管理、任务调度和数据可视化于一体&#xff0c;不仅实现数据的实时监控与分析&#xff0c;还助力系统节能降耗。 ZLG致远电子能源智慧管理解决方案 在ZLG致…

shallowReactive 与 shallowRef

除了之前的 ref与reactive 之外&#xff0c;Vue3 还准备了另外两个API&#xff0c;也是用来对响应式数据做处理&#xff0c;那就是 shallowReactive 与 shallowRef shallowReactive 文档解释&#xff1a;reactive() 的浅层作用形式&#xff0c;只能定义对象类型的数据。和 r…

pytorh基础知识和函数的学习:图像文件的Tensor

在深度学习和计算机视觉中&#xff0c;将图像文件转换为张量&#xff08;Tensor&#xff09;是数据预处理的重要步骤。Tensor 是一种多维数组&#xff0c;在 PyTorch 中&#xff0c;用于表示和处理数据。 首先&#xff0c;创建一个3*3的图像文件&#xff0c;放大之后&#xff…

终端防火墙软件功能 | 在终端设备上启用防火墙!终端安全小课堂开讲啦

终端设备的安全性直接关系到企业的整体网络安全&#xff0c;随着网络威胁的日益复杂和多样化&#xff0c;启用并合理配置终端防火墙软件是保障终端安全不可或缺的一环。 今天&#xff0c;我们将走进终端安全小课堂&#xff0c;详细解析安企神终端安全管理软件中的防火墙功能&a…

unity Android + WebGL 浏览器打开

1.切换为WebGL平台 2.打包的时候设置 3.放入FHS 手机打开这个链接即可 注意这是在局域网内

c++11异常

一、异常介绍 1、异常作用 异常是一种处理错误的方式&#xff0c;当一个函数发现自己无法处理的错误时就可以抛出异常&#xff0c;让函数的 直接或间接的调用者处理这个错误 2、异常操作 &#xff08;1&#xff09;throw 当问题出现时&#xff0c;程序会抛出一个异常。这是…

darnet 识别检测本地视频 保存本地视频

darnet 识别检测本地视频 保存本地视频 darknet的github下载 darknet的github下载 darknet地址 将这个下载后&#xff0c;保存在catkin_ws的src目录下

C语言 ——— 柔性数组

目录 柔性数组的概念以及定义 柔性数组的特点 柔性数组的使用 柔性数组的概念以及定义 概念&#xff1a; C99中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就叫柔性数组成员 定义&#xff1a; struct st_type {int i;int a[0]; //柔性数组成员…

rpmbuild构建mysql-boost-5.7.42版本的rpm包

系列文章目录 rpmbuild入门 文章目录 系列文章目录前言一、准备工作1、mysql-5.7.42源码包下载2、准备mycnf配置文件3、mysqld.server配置文件准备4、检查服务器的cmake版本和gcc版本5、服务器安装依赖 二、编译构建0、rpmbuild目录树示例1、spec文件拆分解释2、源码包解压部分…

秋招力扣Hot100刷题总结——堆

1. 数组中的第K个最大元素 题目链接 题目要求&#xff1a;给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) …

使用Jupyter Notebook实现Python编程

目录 1. 安装Anaconda 2. 启动Jupyter Notebook 3. 调试Python代码: 4. 定义一个简单的python类 ​5. 在控制台运行代码,并从命令行接受参数 6. 调用其他py文件中的类 ​7. conda环境切换和迁移 1. 安装Anaconda 到Anaconda官网下载安装包:Download Anaconda Distri…

Android - lock/unlock bootloader

在执行 adb remount 时高版本经常会提示失败 此时就需要对设备的进行解锁操作。记录两个部分&#xff0c;Google解锁和展锐解锁。 目录 一、Google解锁 二、展锐解锁 三、补充跳过按键检测的方案 一、Google解锁 官网介绍的unlock方法如下&#xff1a;锁定/解锁引导加载程序…

并发编程与并发安全

持续更新中 模块序号目录链接前言介绍1前言地址2介绍地址基础知识3计算机网络地址4操作系统地址5Java基础地址6Java并发地址7Java虚拟机地址中间件8Mysql地址9Redis地址10Elasticsearch地址11RabbitMQ地址12RocketMQ地址框架13分布式系统地址14MyBatis地址15Dubbo地址16Spring地…

Java面试题--JVM大厂篇之JVM 大厂面试题及答案解析(3)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到我的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客&…

如何使用ssm实现基于HTML5的出租车管理系统

TOC ssm126基于HTML5的出租车管理系统jsp 绪论 1.1 选题背景 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。计算机软件可以针对不同行业的营业特点以…

【数据结构5】二叉搜索树(插入、查询、删除)

1 二叉搜索树 1.1 二叉搜索树-插入 1.2 二叉搜索树-查询 1.3 二叉搜索树-删除 1 二叉搜索树 二叉搜索树是一颗二叉树且满足性质:设是二叉树的一个节点。 如果y是x左子树的一个节点&#xff0c;那么y.key< x.key;如果y是x右子树的一个节点&#xff0c;那么y.key > x.key。…

【非常困难】 猿人学web第一届 第10题 js 混淆 - 重放攻击对抗

文章目录 调试干扰第一个 debuggerHook 代码 第二个 debuggerHook 代码 第三个 Function.constructor.prototype 检测Hook 代码 完整的 Hook 代码 接口分析加密参数 m 生成位置加密参数还原加密点扣代码提示_yrxyA\$()var _yrxmEu _yrxWKg(_yrxyHJ...._yrxWKg() let result _…