Ich habe ein Diagramm geschrieben, das Finanzdaten anzeigt. Die Leistung war gut, solange ich weniger als 10.000 Punkte als zusammenhängende Linie gezeichnet habe, indem ich PathGeometry
zusammen mit PathFigure
y LineSegment
s. Aber jetzt muss ich bis zu 100.000 Punkte gleichzeitig anzeigen (ohne Scrollen) und es ist schon mit 50.000 Punkten sehr langsam. Ich dachte an StreamGeometry
aber ich bin mir nicht sicher, da es im Grunde dasselbe ist wie ein PathGeometry
die Informationen als Byte-Stream zu speichern. Hat jemand eine Idee, wie man das viel performanter machen kann oder hat vielleicht sogar schon jemand etwas Ähnliches gemacht?
EDIT: Diese Datenpunkte ändern sich nicht, wenn sie einmal gezeichnet sind. Wenn es also Optimierungsmöglichkeiten gibt, lassen Sie es mich bitte wissen (die Liniensegmente sind im Moment eingefroren).
EDIT: Ich habe StreamGeometry ausprobiert. Das Erstellen der Grafik dauerte aus irgendeinem Grund noch länger, aber das ist nicht das Problem. Das Zeichnen auf dem Diagramm nach dem Zeichnen aller Punkte ist immer noch so langsam wie die vorherige Methode. Ich denke, es ist einfach zu viele Datenpunkte für WPF zu behandeln.
EDIT: Ich habe ein bisschen herumexperimentiert und festgestellt, dass sich die Leistung etwas verbessert hat, indem ich die Koordinaten, die vorher in double waren, in int umgewandelt habe, um zu verhindern, dass WPF Anti-Aliasing Sub-Pixel-Linien.
EDIT: Vielen Dank für alle Antworten, die vorschlagen, die Anzahl der Liniensegmente zu reduzieren. Ich habe sie auf höchstens das Doppelte der horizontalen Auflösung für gestufte Linien und höchstens die horizontale Auflösung für einfache Linien reduziert und die Leistung ist jetzt ziemlich gut.