Mschart - 在 C# 中不更新条形图
Mschart - Bar Chart Not Updating in C#
在我的项目中,值每 1 秒更新一次;基于我正在绘制条形图的值。发生的事情是它没有更新和绘制实时值。
例如
如果值为 (30,10)
,它会绘制。
如果值为 (30,45)
,它会更新并绘制。
如果值为 (30,5)
图表不更新且不获取图表。
请帮忙做什么
我试过了 Chart1.Series["Series1"].Points.Clear();
但这不起作用,因为我的值每 1 秒更新一次。
您似乎需要为图表设置最小值和最大值 Axis-Y
或者,如果您愿意,可以让轴自动重置其最小值和最大值。
如果您为 Y 轴设置特定的最小值和最大值,则图表 Y 轴不会自动更改其值,并且当您向图表添加新点时,Y 轴值不会更新,只会更新积分将更新:
chart1.ChartAreas[0].AxisY.Minimum = 0;
chart1.ChartAreas[0].AxisY.Maximum = 200;
您还可以将图表设置为自动更改 Aixs-Y 的范围,这样 Axis-Y 会更新它的最小值和最大值,并且您的图表 Axiy-Y 会发生变化:
chart1.ResetAutoValues();
//Or this
//chart.ChartAreas[0].RecalculateAxesScale()
举个例子:
在表格上输入 Chart
和 Timer
。设置Timer的时间间隔为1000ms,设置Enabled
为true
。处理 Load
表单事件和 Tick
定时器事件并编写这些代码:
private void From1_Load(object sender, EventArgs e)
{
chart1.Series.Clear();
chart1.Series.Add("Serie1");
chart1.ChartAreas[0].AxisY.Minimum = 0;
chart1.ChartAreas[0].AxisY.Maximum = 200;
}
private void timer1_Tick(object sender, EventArgs e)
{
int y = new Random().Next(0, 200);
chart1.Series[0].Points.Clear();
chart1.Series[0].Points.AddXY(30, y);
}
在我的项目中,值每 1 秒更新一次;基于我正在绘制条形图的值。发生的事情是它没有更新和绘制实时值。
例如
如果值为 (30,10)
,它会绘制。
如果值为 (30,45)
,它会更新并绘制。
如果值为 (30,5)
图表不更新且不获取图表。
请帮忙做什么
我试过了 Chart1.Series["Series1"].Points.Clear();
但这不起作用,因为我的值每 1 秒更新一次。
您似乎需要为图表设置最小值和最大值 Axis-Y
或者,如果您愿意,可以让轴自动重置其最小值和最大值。
如果您为 Y 轴设置特定的最小值和最大值,则图表 Y 轴不会自动更改其值,并且当您向图表添加新点时,Y 轴值不会更新,只会更新积分将更新:
chart1.ChartAreas[0].AxisY.Minimum = 0;
chart1.ChartAreas[0].AxisY.Maximum = 200;
您还可以将图表设置为自动更改 Aixs-Y 的范围,这样 Axis-Y 会更新它的最小值和最大值,并且您的图表 Axiy-Y 会发生变化:
chart1.ResetAutoValues();
//Or this
//chart.ChartAreas[0].RecalculateAxesScale()
举个例子:
在表格上输入 Chart
和 Timer
。设置Timer的时间间隔为1000ms,设置Enabled
为true
。处理 Load
表单事件和 Tick
定时器事件并编写这些代码:
private void From1_Load(object sender, EventArgs e)
{
chart1.Series.Clear();
chart1.Series.Add("Serie1");
chart1.ChartAreas[0].AxisY.Minimum = 0;
chart1.ChartAreas[0].AxisY.Maximum = 200;
}
private void timer1_Tick(object sender, EventArgs e)
{
int y = new Random().Next(0, 200);
chart1.Series[0].Points.Clear();
chart1.Series[0].Points.AddXY(30, y);
}