我正在从mysql数据库中提供图表,我需要图表每10秒更新一次,所以我使用计时器并将间隔设置为10,000。
问题在于每次更新时,它都会变得越来越拥挤。一切都在不断缩小。
以下是为图表提供信息的代码:
void llenargrafica()
{
string query_grafica = "select * from humedad,presion,temperatura,viento;";
MySqlCommand cmd_query_grafica = new MySqlCommand(query_grafica, conn);
MySqlDataReader leergrafica;
try
{
conn.Open();
leergrafica = cmd_query_grafica.ExecuteReader();
while (leergrafica.Read())
{
this.chart1.Series["Humedad"].Points.AddXY(leergrafica.GetString("hum_nombre_sensor"), leergrafica.GetFloat("hum_dato"));
this.chart1.Series["Temperatura"].Points.AddXY(leergrafica.GetString("temp_nombre_sensor"), leergrafica.GetFloat("temp_dato"));
this.chart1.Series["Presión"].Points.AddXY(leergrafica.GetString("pre_nombre_sensor"), leergrafica.GetFloat("pre_dato"));
this.chart1.Series["Viento"].Points.AddXY(leergrafica.GetString("vie_nombre_sensor"), leergrafica.GetFloat("vie_dato"));
}
} catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
conn.Close();
chart1.Update();
}
public Reporte_Detallado()
{
InitializeComponent();
llenargrafica();
}
这是定时器代码
private void timer1_Tick(object sender, EventArgs e)
{
llenargrafica();
}
答案 0 :(得分:0)
你只是不断地将数据点添加到同一个空间,当然它会变得更加拥挤。如果您只想显示当前数据,则需要先清除您的积分。您可以在timer1_Tick
区块或llenargrafica
区块
你可以使用
ChartName.Series[0].Points.Clear()
一次清除所有点(在零处开始图表)或者您可以用
删除特定数据点
ChartName.Series[0].Points.RemoveAt(0)
如果您想显示一定数量的数据,您可以计算您的积分
ChartName.Series[0].Points.Count;