C# Chart 不间断补充

  • 基础
    • [步骤 1: 添加引用](#步骤 1: 添加引用)
    • [步骤 2: 创建图表控件](#步骤 2: 创建图表控件)
    • [步骤 3: 配置图表](#步骤 3: 配置图表)
    • [步骤 4: 添加数据系列](#步骤 4: 添加数据系列)
    • [步骤 5: 显示图表](#步骤 5: 显示图表)
    • 一个简单的示例
    • 注意事项
  • 个人学习
    • 首先
    • 其次
    • 目前用到的
      • [判断某个 `Series` 是否存在](#判断某个 Series 是否存在)
      • [设置某个 `ChartAreas` 的XY轴坐标的范围](#设置某个 ChartAreas 的XY轴坐标的范围)

基础

C# 中使用图表通常涉及到以下几个步骤。这里以 Windows Forms 应用程序为例,使用 System.Windows.Forms.DataVisualization.Charting 命名空间来创建图表。

步骤 1: 添加引用

首先,确保你的项目中已经添加了 System.Windows.Forms.DataVisualization 的引用。这通常可以通过 NuGet 包管理器来完成。

步骤 2: 创建图表控件

在你的窗体上添加一个 Chart 控件。你可以在设计视图中拖拽,或者在代码中创建。

步骤 3: 配置图表

配置图表的基本属性,如标题、图例、轴标签等。

步骤 4: 添加数据系列

创建数据系列,并将数据绑定到图表上。

步骤 5: 显示图表

运行应用程序,查看图表的显示效果。

一个简单的示例

展示如何在 Windows Forms 应用程序中创建一个基本的折线图:

csharp 复制代码
using System;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

public class ChartDemoForm : Form
{
    private Chart chart1;

    public ChartDemoForm()
    {
        // 初始化组件
        InitializeComponent();

        // 初始化图表控件
        chart1 = new Chart();
        chart1.Dock = DockStyle.Fill;
        this.Controls.Add(chart1);

        // 设置图表标题
        chart1.Titles.Add("Sample Chart");

        // 创建图表区域
        ChartArea chartArea = new ChartArea("ChartArea1");
        chart1.ChartAreas.Add(chartArea);

        // 创建数据系列
        Series series = new Series("Series1");
        series.ChartType = SeriesChartType.Line; // 设置为折线图
        series.Points.DataBindY(new double[] { 1, 2, 3, 4, 5 }); // 绑定数据

        // 将数据系列添加到图表中
        chart1.Series.Add(series);
    }

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new ChartDemoForm());
    }

    private void InitializeComponent()
    {
        // 这里可以添加窗体的初始化代码
    }
}

注意事项

  • 在实际应用中,你可能需要从数据库、文件或其他数据源动态加载数据。
  • 你可能需要添加更多的自定义设置,如轴的范围、网格线、颜色、图例位置等。
  • 如果你使用的是 ASP.NET 或其他类型的应用程序,使用的方法和库可能会有所不同。
  • 如果你有特定的使用场景或需要进一步的帮助,请提供更多的信息。

个人学习

首先

要知道ChartAreasSeries 的关系

  • 一个 Chart 可以有多个图表区( ChartAreas
  • 一个 ChartAreas 可以有多个图表序列( Series
  • 一个 Series 就是你要显示的某一条线
  • 我们为 Chart 添加 Series ,然后为添加的 Series 设定 ChartAreas

如下代码所示

csharp 复制代码
chart.ChartAreas.Clear();
chart.Series.Clear();
chart.ChartAreas.Add("Name");
chart.ChartAreas["Name"].Visible = true;
csharp 复制代码
// 创建一个图标序列,并设置其显示为曲线
var series = new Series(name) { ChartType = SeriesChartType.Spline };

其次

要有一个观念

Chart 是一个图,我们通过不断创建新的图去覆盖老图达到动态效果

csharp 复制代码
Task.Run(async () => {
	while(flag) {
		await Task.Delay(20); //每20ms更新一下
		//DoSomething
		
	}
});

上述代码为异步更新 Chart,个人不想使用 Timer

csharp 复制代码
series.Points.Clear();
series.Points.AddXY(ListX, ListY);
chart.Invalidate(); 

上述代码为先清空某个 Series 的所有点,然后重新写点,然后更新整个 Chart

目前用到的

判断某个 Series 是否存在

csharp 复制代码
!chart.Series.Any(s => s.Name == Name)

设置某个 ChartAreas 的XY轴坐标的范围

csharp 复制代码
double range = maxValue - minValue;
chart.ChartAreas[series.Name].AxisY.Minimum = minValue - (range * 0.5) - 0.01;
chart.ChartAreas[series.Name].AxisY.Maximum = maxValue + (range * 0.5) + 0.01;

上述代码为 Y 值的。

通过数据动态算出 maxValue minValue 然后修改 Axis@Minimum Maximum 属性(通过 range 增加上下余量)使得图像一直在中间

相关推荐
懷淰メ9 分钟前
python3GUI--基于PyQt5+DeepSort+YOLOv8智能人员入侵检测系统(详细图文介绍)
开发语言·深度学习·yolo·目标检测·pyqt·课程设计·deepsort
我想睡觉26123 分钟前
Python训练营打卡DAY51
开发语言·人工智能·python·深度学习·机器学习
yutian060639 分钟前
C# TextBox 控件限制输入字符为十六进制字符串
开发语言·c#
猛犸MAMMOTH1 小时前
Python打卡第51天
开发语言·python·深度学习
小安同学iter1 小时前
JUC并发编程(四)常见模式
java·开发语言
海风极客1 小时前
《Go小技巧&易错点100例》第三十五篇
开发语言·后端·golang
YuTaoShao1 小时前
Java八股文——Spring「SpringMVC 篇」
java·开发语言·spring
罗迪尼亚的熔岩1 小时前
在C# 中使用建造者模式
java·c#·建造者模式
程序员JerrySUN2 小时前
Linux 内存管理实战精讲:核心原理与面试常考点全解析
linux·运维·开发语言·嵌入式硬件·架构
CodeWithMe2 小时前
【C/C++】long long 类型传参推荐方式
c语言·开发语言·c++