C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■102494 / 親階層)  折れ線グラフ
□投稿者/ たか (1回)-(2023/11/01(Wed) 19:09:05)

分類:[C#] 

c# Windowsフォームアプリ .NET Framework

宜しくお願いします

現在C#でフォーム上の折れ線グラフを2つ表示させています
1秒毎に右から左に移動させて一番左から消えていきます

その時X軸の表示も右から左に秒数が移動しているのですが
X軸の一番左を0で一番右は指定した数値で固定したいのです

ちなみに左を0で右を60としたら グラフは移動していくのですが
X軸の表示は0と60のままの表示にしたいのです

説明が分かりずらいと思いますがご教示宜しくお願い致します


using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace 折れ線グラフ
{
    public partial class Form1 : Form
    {
        private OpcClient client;
        private DateTime startTime;
        private Timer timer;
        private Random random;
        private int dataCounter;
        private Chart upperChart;
        private Chart lowerChart;

        int cycletime = 6;
       
        public Form1()
        {
            InitializeComponent();

            labelValue.Text = cycletime.ToString();

            random = new Random();
            
            upperChart = CreateChart();
            upperChart.Location = new System.Drawing.Point(280, 250);
            this.Controls.Add(upperChart);

            lowerChart = CreateChart();
            lowerChart.Location = new System.Drawing.Point(280, 530);
            this.Controls.Add(lowerChart);

            dataCounter = -1;

        }
        public void UpdateValue(int value)
        {
            labelValue.Text = value.ToString();
            cycletime = value;
        }

        private void btnStart1_Click(object sender, EventArgs e)
        {
            startTime = DateTime.UtcNow;
            timer = new Timer();
            timer.Interval = 1000; // 1秒
            timer.Tick += Timer_Tick;
            timer.Start();
        }

        private void btnStop1_Click(object sender, EventArgs e)
        {
            timer.Stop();
        }

        private Chart CreateChart()
        {
            Chart chart = new Chart();
            chart.Size = new System.Drawing.Size(1200, 250);
            chart.ChartAreas.Add(new ChartArea());
            chart.Series.Add("DataSeries");
            chart.Series["DataSeries"].ChartType = SeriesChartType.Line;
            chart.Series["DataSeries"].BorderWidth = 2; 
            chart.ChartAreas[0].AxisX.LabelStyle.Enabled = true; 

            chart.ChartAreas[0].AxisY.Minimum = 0; 
            chart.ChartAreas[0].AxisY.Maximum = 100; 

            return chart;
        }

        private void Timer_Tick(object sender, EventArgs e)
        {

            int upperData = random.Next(40, 80);
            int lowerData = random.Next(0, 100);
            
            upperChart.Series["DataSeries"].Points.AddXY(dataCounter+1, upperData);
            lowerChart.Series["DataSeries"].Points.AddXY(dataCounter+1, lowerData);

            dataCounter++;

            upperChart.ChartAreas[0].AxisX.Minimum = dataCounter >= cycletime ? dataCounter - cycletime : 0;
            upperChart.ChartAreas[0].AxisX.Maximum = dataCounter;

            lowerChart.ChartAreas[0].AxisX.Minimum = dataCounter >= cycletime ? dataCounter - cycletime : 0;
            lowerChart.ChartAreas[0].AxisX.Maximum = dataCounter;
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: 折れ線グラフ /魔界の仮面弁士
 
上記関連ツリー

折れ線グラフ / たか (23/11/01(Wed) 19:09) #102494 ←Now
Re[1]: 折れ線グラフ / 魔界の仮面弁士 (23/11/01(Wed) 21:34) #102495
  └ Re[2]: 折れ線グラフ / たか (23/11/02(Thu) 11:02) #102496 解決済み
    └ Re[3]: 折れ線グラフ / たか (23/11/22(Wed) 19:47) #102590
      └ Re[4]: 折れ線グラフ / 魔界の仮面弁士 (23/11/24(Fri) 11:13) #102602

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信