Diagramm

    • Release
    • Open Source

    Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von masterm.

      Hallo Community,

      da man immer mal wieder Diagramme braucht, und ich nicht ständig das Rad
      neu erfinden möchte, habe ich ein sehr simpel zu bedienendes Diagramm geschrieben,
      mit welchem man sich ständig ändernde Werte anzeigen lassen kann.
      Dieses habe ich in etwa an das Diagramm im Windows Taskmanager angelehnt.

      Die Hauptfunktion des Diagramms ist AddPoint damit wird ein weiterer Wert in
      das Diagramm geschrieben (das Diagramm geht einen Schritt nach rechts/links).

      Dann gibt es noch die Funktion DrawLines damit können Linien über das Diagramm gezeichnet werden. Mit DeleteLines werden diese wieder gelöscht.

      Mit der Funktion RefreshDiagramm kann das Diagramm neugezeichnet werden,
      was nur für den Fall eines Grafikfehlers gedacht ist.

      Das Diagramm bzw. das ganze Controll kann mit SaveDiagtramm bzw. SaveControl in eine '.png' - Datei gespeichert

      Propertys


      Minimum - gibt den Minimalen Punkt des Diagramms an (es können auch Punkte darunter angegeben werden, sodass die Linie ins "Nichts" hineinläuft)
      Maximum - gibt den MaximalenPunkt des Diagramms an (es können auch Punkte darüber angegeben werden, sodass die Linie ins "Nichts" hineinläuft)
      Header - Überschrift des Diagramms
      TextX - Beschriftung der X-Achse
      TextY - Beschriftung der Y-Achse
      PointDifference - Gibt den Abstand zwischen den Punkten an
      MaxPoins - Maximale Anzahl der Punkte in der Liste (verhindert überladung)
      Modus - Es gibt drei Darstellungs-Modi (siehe Screenshots)
      Color - Hintergrundfarbe des Diagramms
      LineColor - Farbe der Linien
      LineThickness - Dicke der Linien
      LeftToRight - gibt an, ob das Diagramm von Links nach Rechts, oder von Recht nach Links gezeichnet werden soll
      BackColor - Hintergrundfarbe des Diagramms

      Sämtliche Propertys können während der Laufzeit geändert werden, und werden automatisch sofort übernommen, und das Diagramm wird ggf. neu gezeichnet. (falls wider Erwarten Probleme auftreten --> RefreshDiagramm und bitte posten ;)

      Anwenungsbeispiel:


      VB.NET-Quellcode

      1. ' So sind alle Diagramme in den Screenshots gezeichnet worden
      2. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
      3. Dim rnd As New Random
      4. Diagramm1.AddPoint(rnd.Next(1, 100))
      5. End Sub



      Screenshots:



      Downloads:

      Die Dll-Datei, um das Diagramm einfach in die Form zu ziehen.
      Das gesammte Projekt, falls jemand noch was hinzufügen will (bei größeren Änderungen bitte posten, damit alle die neue Funktion nutzen können)




      Dateien
      • Eigenes Diagramm.dll

        (38,4 kB, 60 mal heruntergeladen, zuletzt: )
      • Diagramm.zip

        (103,4 kB, 74 mal heruntergeladen, zuletzt: )
      Moin,

      ich habe folgende Vorschläge:
      1. Die Beschriftung der X-Achse nicht über, sondern unter das Diagramm schreiben. Ist der Diagrammursprung oben links?
      2. Baue deine Property Punkte so um, dass sie eine PointCollection (eigene Klasse) beinhaltet. Zugleich verlagere deine AddPoint-Funktion in diese.
      3. Wie sieht's mit mehreren Datenlinien aus? Schreibe eine Lines-Property (z. B. LineCollection). Darin dann... Ach, ich mache schnell ein Klassendiagramm :D

      Schaue hier:

      So wäre das z. B. besser strukturiert, auch wenn es nicht die optimalste Lösung ist. Über das CollectionChanged-Event kannst du dann dein Diagramm aktualisieren. Du solltest auch englische Bezeichner verwenden.
      Mit freundlichen Grüßen,
      Thunderbolt

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „timmi31061“ () aus folgendem Grund: Schreibfehler

      Unbedingt zu beobachten wäre auch, ob und wieviele der Anforderungen nicht bereits mittm System.Windows.Forms.DataVisualization.Charting.Chart abgedeckt werden können.
      Also ehe man da ein neues Control aus der Hüfte stemmt, oder sich eine Fremd-Dll ins Boot holt, vlt. erstmal gucken, was mit Framework-Bordmitteln geleistet werden kann.
      :SDanke für deine Rückmeldung und die Mühen des Klassendiagramms :thumbsup:

      timmi31061 schrieb:

      Die Beschriftung der X-Achse nicht über, sondern unter das Diagramm schreiben. Ist der Diagrammursprung oben links?
      Das kann ich gerne machen, weiß auch nicht, wie ich auf die Idee gekommen bin, das oben hin zu machen ?(

      timmi31061 schrieb:

      Baue deine Property Punkte so um, dass sie eine PointCollection (eigene Klasse) beinhaltet. Zugleich verlagere deine AddPoint-Funktion in diese.
      Auch das ist möglich, habe das aber aus Faulheit gelassen, da ich von Property 'Punkte' aus, nicht mehr auf andere Propertys bzw. Variablen zugreifen kann, aber auch das kann ich noch Verbessern.

      timmi31061 schrieb:

      Wie sieht's mit mehreren Datenlinien aus? Schreibe eine Lines-Property (z. B. LineCollection). Darin dann... Ach, ich mache schnell ein Klassendiagramm
      Hui, nicht ganz unaufwendig. Das ganze ist eigentl. nur ein kleines Diagramm.
      Außerdem befürchte ich, dass ich manche dieser Sachen noch nicht verwirklichen kann.

      @ErfinderDesRades Verstehe jetzt nicht ganz, was du meinst, sorry
      EDIT: Achso, naja mein Ziel war es, ein simpel zu bedinendes Diagramm zu erstellen, da ich vor einiger Zeit mal Probleme mit Diagrammen hatte, da
      es keine Vernünftigen Tutorials gab, und da ich diese auch nicht richtig Verstanden habe :S
      Außerdem kann ich das Chart-Controll nicht auf die schnelle finden ?(

      Auf jeden Fall, Danke für eure Rückmeldungen :thumbup:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kilian_98“ ()

      @Kilian_98 Deine Dll sieht nicht schlecht aus. Mal sehen, wie ich sie einsetzen werde.

      @timmi31061 Mit welchem hast du das Klassendiagramm erstellt?
      Alle Angaben sind ohne Gewähr und mit Pistole. Glücksspiel und Drogen können süchtig machen. Weitere Infos unter spielen-mit-verantwortung.de und kenn-dein-limit.de.