图表范围每次使用C#从mysql更新时都会变得越来越小

时间:2017-04-12 02:10:44

标签: c# mysql charts

我正在从mysql数据库中提供图表,我需要图表每10秒更新一次,所以我使用计时器并将间隔设置为10,000。

问题在于每次更新时,它都会变得越来越拥挤。一切都在不断缩小。

This is when it first starts

this is about 40 seconds later

以下是为图表提供信息的代码:

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();
    }

1 个答案:

答案 0 :(得分:0)

你只是不断地将数据点添加到同一个空间,当然它会变得更加拥挤。如果您只想显示当前数据,则需要先清除您的积分。您可以在timer1_Tick区块或llenargrafica区块

中执行此操作

你可以使用
ChartName.Series[0].Points.Clear()
一次清除所有点(在零处开始图表)或者您可以用
删除特定数据点 ChartName.Series[0].Points.RemoveAt(0)
如果您想显示一定数量的数据,您可以计算您的积分 ChartName.Series[0].Points.Count;