vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Schnelles Zeichnen in WPF 
Autor: Maas
Datum: 01.05.09 19:10

Hallo Leute,

Ich bin (immer noch) dabei ein Chart-Control zu entwickeln. Sieht alles bisher auch ganz gut aus, nur mache ich mir langsam Sorgen über die Schnelligkeit. Ich arbeite mit einer Tabelle mit ca. 2400 Datensätzen. Im Control kann man auswählen welcher Bereich dargestellt werden soll. Je größer der Bereich, umso länger dauerts natürlich. Einen einzelnen Chart zu zeichnen ist kein Problem. Man kann allerdings auch noch Indikatoren einfügen und dann können schon so einige Linien zusammen kommen.



Wenn ich z.B. einen Bereich von 80-90% darstelle dauert es bei mir pro Linie 350-700ms (Q6600 4x2,4GHz / 4GB RAM / nVidia 8800GTS). Das Ganze summiert sich dann halt je nach Anzahl der Indikatoren. An den Berechnungen für die Werte der Indikatoren liegt es nicht. Ich habe mal alles ohne das Zeichnen durchlaufen lassen und dann hat es nur noch 3ms gedauert.

Hier mal ein Beispielcode mit dem ich einen Chart zeichne.
   Private Sub DrawLine()
        Dim width As Double = 2000
        Dim height As Double = width / 2
        Dim lst() As Double = GetRandomValueList(CInt(width))
        Dim p As New Pen(Brushes.DarkBlue, 1)
 
        Dim d As Date = Now
 
        Dim dGroup As New DrawingGroup
        Using dc As DrawingContext = dGroup.Open
            dc.DrawRectangle(Brushes.Transparent, New Pen(Brushes.Black, 2), _
              New Rect(0, 0, width, height))
            For i As Integer = 0 To lst.Count - 2
                dc.DrawLine(p, New Point(i, lst(i) * height), New Point(i + 1, _
                  lst(i + 1) * height))
            Next
        End Using
        Image1.Source = New DrawingImage(dGroup)
 
        Debug.WriteLine((Now - d).TotalMilliseconds)
    End Sub
 
 
 
    Private Function GetRandomValueList(ByVal maximum As Integer) As Double()
        Dim lst As New List(Of Double)
        For i As Integer = 0 To maximum
            Randomize()
            lst.Add(Rnd())
        Next
        Return lst.ToArray
    End Function
Gibt es hier jetzt eine Möglichkeit effizienter zu zeichnen, z.B. mit anderen Methoden?

Danke schonmal für jede Hilfe

Maas
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Schnelles Zeichnen in WPF5.095Maas01.05.09 19:10
Re: Schnelles Zeichnen in WPF3.368Drapondur02.05.09 15:10
Re: Schnelles Zeichnen in WPF3.215Maas02.05.09 20:29
Re: Schnelles Zeichnen in WPF2.947Maas04.05.09 17:41
Re: Schnelles Zeichnen in WPF3.146Drapondur06.05.09 04:20
Re: Schnelles Zeichnen in WPF3.384Maas06.05.09 11:05
Re: Schnelles Zeichnen in WPF3.362Maas17.05.09 22:41

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel