C#言語を使用して.Net Frameworkのチャートコントロールを使用し、リアルタイムの動的曲線を描画する

1.プロジェクトの実現

1.1構成デザイナー

デザイナで次のコントロールをドラッグします:ChartButtonTimer
ここに画像の説明を挿入

1.1.1チャートの設定

chart1設定の属性を含めChartAreasSeries
ここに画像の説明を挿入

  • ChartAreas:主にカーソルと座標軸を設定します。
  1. カーソルを設定すると、グラフが拡大されます。
    ここに画像の説明を挿入

  2. 軸の設定では、スクロールバーとグリッド線の色と形式を設定できます。
    ここに画像の説明を挿入

  • Series:アイコンの種類(スプライン曲線、散布図、円グラフなど)、曲線番号、データポイントマークのスタイル、凡例名などを設定できます。ここでは、次の2つのオプションを変更しました。
  1. ChartTypeをSplineに変更すると、滑らかな曲線を描くことができます。
  2. ツールチップを#VALX、#VALYに変更すると、グラフの線をマウスでクリックしたときにXYポイントの座標を表示できます。
    必要に応じて残りの属性を変更してください。
    ここに画像の説明を挿入

1.2Form1.csファイルを構成します

Form1.csのコードは次のとおりです

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;          //使用串口
using System.Threading.Tasks;   //线程
using System.Runtime.InteropServices;

namespace Svpwm_Can
{
    
    
    public partial class Form1 : Form
    {
    
    
        /*线性列表用于图表显示*/
        private List<int> List_ia = new List<int>();    
        Random random = new Random();

        public Form1()
        {
    
    
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
    
    
            int num1 = random.Next(0, 500);   //随机数
            List_ia.Add(num1); 
            ListRemove(List_ia);
            DrawChart(List_ia);
        }

        private void DrawChart(List<int> List_ia)
        {
    
    
            chart1.Series[0].Points.Clear();    //清除所有点

            for (int i = 0; i < List_ia.Count; i++)
            {
    
    
                chart1.Series[0].Points.AddXY(i + 1, List_ia[i]);   //添加点
            }

        }

        //清除所有的链表
        private void ClearAllList()
        {
    
    
            List_ia.Clear();

        }

        //当大于50时移除list头部
        private void ListRemove(List<int> list)
        {
    
    
            if (list.Count >= 50)
            {
    
    
                list.RemoveAt(0);
            }
        }

        private void button_start_Click(object sender, EventArgs e)
        {
    
    
            if (button_start.Text == "开始")
            {
    
    
                timer1.Start();
                button_start.Text = "暂停";
            }
            else
            {
    
    
                timer1.Stop();
                button_start.Text = "开始";
            }
        }
    }
}

2.ダイナミックカーブソフトウェアプレビュー

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/mahoon411/article/details/109658764