□投稿者/ たか (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();
}
}
}
|
|