Punkte in Chart eintragen



  • Hi Leute,

    ich sammle in meinem programm eine ganze reihe werte und trage die dann in einen chart ein. die folgende schleife braucht je nach anzahl der messwerte ziemlich lange dafür

    for (int k = 0; k < i; k++)
    {          
        Invoke((MethodInvoker)(() => this.Chart_PhiZ.Series["PhiZ"].Points.AddXY((double)(k + 1) / (double)200, dPhiZ[k])));                
    }
    

    Ich habe das in einem anderen Thread laufen, so dass ich sehe wie der graph nach und nach gezeichnet wird. je nach anzahl der messwerte dauert es beliebig lang... gibt es eine möglichkeit, die x und y-werte erstmal separat zu sammeln und am ende alles zusammen anzeigen zu lassen? es kostet unheimlich viel zeit wenn die gui jedes mal den chart updatet

    grüße



  • Ist doch klar, wenn du pro Punkt jeweils den Invoke-Aufruf startest...
    Mach es umgekehrt und pack die Schleife in den Invoke-Aufruf (und wenn dir das dann zu langsam ist, weil es zu viele Punkte sind, dann benutze eine doppelte Schleife).

    PS: Die Referenz auf die Points würde ich mir nur einmalig holen und in einer Variablen abspeichern.



  • Wie genau meinst du das? Sorry das ist mein erstes C#-Projekt



  • Und dann gleich mit Threads hantieren?



  • Und dann gleich mit Threads hantieren?
    

    Joa, kann nicht soviel anders sein als in C++. Habs nun mit BeginInvoke und nem delegate gelöst. Danke für den Tipp!



  • Hmm.. oder zeichne die punkte in eine Bitmap, und mappe diese nach und nach aufn screen^^


Log in to reply