Wie ich richtig update mein chart Werten? (In Echtzeit)

Ich vor kurzem stieß auf ein tool namens LiveChart und beschloss, es auszuprobieren.

Leider habe ich einige Probleme herauszufinden, wie das Diagramm aktualisieren von Werten in Echtzeit. Ich bin mir ziemlich sicher, es gibt eine saubere und richtige Weg, es zu tun, aber ich kann nicht Naht, um es zu finden.

Ich würde gerne in der Lage, zur Aktualisierung der Werte durch eine private void oder-Taste.

In meinem code, den ich Teste es mit einem ToolStripMenu.

[CODE]:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using LiveCharts;
using LiveCharts.WinForms;
using LiveCharts.Wpf;
using PokeShowdown_AccStats_T.Properties;
using LiveCharts.Defaults;

namespace PokeShowdown_AccStats_T
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //int val1 = int.Parse(Settings.Default.Value1);

            var value1 = new ObservableValue(3);
            var value2 = new ObservableValue(7);
            var value3 = new ObservableValue(10);
            var value4 = new ObservableValue(2);

            //value1.Value = 5;

            cartesianChart1.Series.Add(new LineSeries 
            {
                Values = new ChartValues<ObservableValue> { value1, value2, value3, value4 },
                StrokeThickness = 4,
                StrokeDashArray = new System.Windows.Media.DoubleCollection(20),
                Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(107, 185, 69)),
                Fill = System.Windows.Media.Brushes.Transparent,
                LineSmoothness = 0,
                PointGeometry = null
            });



            cartesianChart1.Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(34, 46, 49));

            cartesianChart1.AxisX.Add(new Axis
            {
                IsMerged = true,
                Separator = new Separator
                {
                    StrokeThickness = 1,
                    StrokeDashArray = new System.Windows.Media.DoubleCollection(2),
                    Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(64, 79, 86))
                }
            });
            cartesianChart1.AxisY.Add(new Axis
            {
                IsMerged = true,
                Separator = new Separator
                {
                    StrokeThickness = 1.5,
                    StrokeDashArray = new System.Windows.Media.DoubleCollection(4),
                    Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(64, 79, 86))
                }
            });
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void changeValue1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Settings.Default.Value1 = "10";
            Settings.Default.Save();
            this.Text = Settings.Default.Value1;

        }

        private void changeValue1To3ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Settings.Default.Value1 = "3";
            Settings.Default.Save();
            this.Text = Settings.Default.Value1;

        }
    }
}
  • Chart unterstützt Datenbindung. Verwenden Sie Datenbindung und aktualisieren von Daten-Quelle.
InformationsquelleAutor Jose Cancel | 2016-11-04



2 Replies
  1. 8

    Live-Charts versucht es einfach zu halten. Die Logik ist die Verwendung einer generischen collection mit dem Typ, den Sie benötigen, zu zeichnen, und dann genauso einfach wie das hinzufügen/entfernen oder zu aktualisieren jedes element in dieser Auflistung dann das Diagramm aktualisiert werden.

    Ihre Frage zu beantworten, müssen Sie normalerweise:

    public partial class Form1 : Form
    {
        private ObservableValue value1;
    
        public Form1()
        {
            InitializeComponent();
    
            //int val1 = int.Parse(Settings.Default.Value1);
    
            value1 = new ObservableValue(3);
            //...
    
            cartesianChart1.Series.Add(new LineSeries 
            {
                Values = new ChartValues<ObservableValue> { value1, ... },
            });
        }
    
        private void changeValue1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            value1.Value = 10;
            Settings.Default.Value1 = "10";
            Settings.Default.Save();
            this.Text = Settings.Default.Value1;
    
        }
    }

    Dann wird die Bibliothek Griff-Animationen und das update

    Wie ich richtig update mein chart Werten? (In Echtzeit)

  2. 3

    Hinweis: Die Frage ist, LiveCharts. Aber diese Antwort ist geschrieben, basierend auf MSChart. Um die Antwort zu sehen über LiveCharts siehe andere Antwort.

    Chart unterstützt Datenbindung. Verwenden Sie data-binding und Daten für das update-Quelle aktualisieren Sie dann Diagramm. Zum Beispiel:

    DataTable table = new DataTable();
    Random random = new Random();
    private void Form1_Load(object sender, EventArgs e)
    {
        table.Columns.Add("X", typeof(int));
        table.Columns.Add("Y", typeof(int));
        for (int i = 0; i < 10; i++)
            table.Rows.Add(i+1, random.Next(100));
        chart1.Series[0].ChartType = 
            System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
        chart1.Series[0].XValueMember = "X";
        chart1.Series[0].YValueMembers = "Y";
        chart1.DataSource = table;
        chart1.ChartAreas[0].AxisX.Interval = 1;
        chart1.ChartAreas[0].AxisX.Minimum = 0;
        chart1.ChartAreas[0].AxisX.Maximum = 10;
        chart1.ChartAreas[0].AxisY.Interval = 10;
        chart1.ChartAreas[0].AxisY.Minimum = 0;
        chart1.ChartAreas[0].AxisY.Maximum = 100;
        chart1.DataBind();
        var timer = new Timer() { Interval= 300};
        timer.Tick += timer_Tick;
        timer.Start();
    }
    void timer_Tick(object sender, EventArgs e)
    {
        for (int i = 0; i < 10; i++)
            table.Rows[i][1]= random.Next(100);
        chart1.DataBind();
    }

    Wie ich richtig update mein chart Werten? (In Echtzeit)

    • Dies ist nicht das, was der OP fordert, dann fordert er über Live-Charts
    • Es scheint, dass ich übersehen und irrtümlich entfernt livecharts tag Bearbeiten. Ja die Frage ist, livecharts.
    • Auch dir/anderen wer downvoted die Antwort brauchen nicht donwvote eine Antwort einfach zu verblassen Sie. Dieser Beitrag wird hilfreich sein für zukünftige Leser, die tun will, der trick mit mschart. Sie können post eine gute Antwort statt, keine Notwendigkeit zu verblassen andere Antworten.
    • Sorry, ich wollte zu entfernen, die nach unten Stimmen, aber es war zu spät, ich weiß, deine Antwort ist auch hilfreich
    • Kein problem. Ich bearbeitet die Antwort und Sie können es jetzt tun.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.