Benutzer mit den meisten Antworten
Punkte in Windows Forms Chart markieren

Frage
Antworten
-
Hallo Matthias,
Sind die Koordinaten Client-Koordinaten auf der Form oder irgend etwas anderes?
Für mich klingt es, deiner Frage nach, nach Client-Koordinaten. Ich kann es aktuell nicht testen, aber versuche mal das Paint-Event des Charts zu abonnieren und dann über e.Graphics... etwas zu zeichnen. Das Graphics-Objekt der gleichnamigen Eigenschaft bietet dir verschiedene Methoden zum Zeichnen von 2D Figuren an.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Donnerstag, 6. August 2015 09:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 14. August 2015 12:49
-
Hi Matthias,
Du kannst den Stil jedes Punktes separat festlegen. Nachfolgend dazu ein Beispiel, wo zufällig Punkte mit Sternchen markiert werden.Imports System.Windows.Forms.DataVisualization.Charting Public Class Form9 Private ch As New Chart With {.Text = "Chart", .Dock = DockStyle.Fill} Private ca As New ChartArea With {.Name = "Bereich"} Private l1 As New Legend With {.Name = "Legende"} Private s1 As New Series With {.ChartArea = "Bereich", .Legend = "Legende", .Name = "Serie", .ChartType = SeriesChartType.Line} Private rnd As New Random Private Sub Form9_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Width = 600 Me.Controls.Add(ch) With ch .ChartAreas.Add(ca) .Legends.Add(l1) .Series.Add(s1) For Each wert In Testdaten.GetSerie Dim p = s1.Points.Add(wert.X, wert.Y1) If rnd.NextDouble > 0.69999999999999996 Then With p .MarkerSize = 20 .MarkerStyle = MarkerStyle.Star5 End With End If Next End With End Sub Public Class Testdaten Public Shared Function GetSerie() As IEnumerable(Of DatenObjekt) Return From e In GetData() Let n = e \ 45 Group By n Into Count() Select New DatenObjekt With {.X = n, .Y1 = Count} End Function Private Shared Function GetData() As List(Of Integer) Dim rnd As New Random Dim l As New List(Of Integer) For i = 1 To 1000 l.Add(rnd.Next(0, 4096)) Next Return l End Function End Class Public Class DatenObjekt Public Property X As Integer Public Property Y1 As Integer End Class End Class
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Donnerstag, 6. August 2015 09:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 14. August 2015 12:49
Alle Antworten
-
Hallo Matthias,
Sind die Koordinaten Client-Koordinaten auf der Form oder irgend etwas anderes?
Für mich klingt es, deiner Frage nach, nach Client-Koordinaten. Ich kann es aktuell nicht testen, aber versuche mal das Paint-Event des Charts zu abonnieren und dann über e.Graphics... etwas zu zeichnen. Das Graphics-Objekt der gleichnamigen Eigenschaft bietet dir verschiedene Methoden zum Zeichnen von 2D Figuren an.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Donnerstag, 6. August 2015 09:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 14. August 2015 12:49
-
Hi Matthias,
Du kannst den Stil jedes Punktes separat festlegen. Nachfolgend dazu ein Beispiel, wo zufällig Punkte mit Sternchen markiert werden.Imports System.Windows.Forms.DataVisualization.Charting Public Class Form9 Private ch As New Chart With {.Text = "Chart", .Dock = DockStyle.Fill} Private ca As New ChartArea With {.Name = "Bereich"} Private l1 As New Legend With {.Name = "Legende"} Private s1 As New Series With {.ChartArea = "Bereich", .Legend = "Legende", .Name = "Serie", .ChartType = SeriesChartType.Line} Private rnd As New Random Private Sub Form9_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Width = 600 Me.Controls.Add(ch) With ch .ChartAreas.Add(ca) .Legends.Add(l1) .Series.Add(s1) For Each wert In Testdaten.GetSerie Dim p = s1.Points.Add(wert.X, wert.Y1) If rnd.NextDouble > 0.69999999999999996 Then With p .MarkerSize = 20 .MarkerStyle = MarkerStyle.Star5 End With End If Next End With End Sub Public Class Testdaten Public Shared Function GetSerie() As IEnumerable(Of DatenObjekt) Return From e In GetData() Let n = e \ 45 Group By n Into Count() Select New DatenObjekt With {.X = n, .Y1 = Count} End Function Private Shared Function GetData() As List(Of Integer) Dim rnd As New Random Dim l As New List(Of Integer) For i = 1 To 1000 l.Add(rnd.Next(0, 4096)) Next Return l End Function End Class Public Class DatenObjekt Public Property X As Integer Public Property Y1 As Integer End Class End Class
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Moderator Donnerstag, 6. August 2015 09:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 14. August 2015 12:49