Graph in Picturebox zeichnen

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von hal2000.

    Graph in Picturebox zeichnen

    hallo!

    Ich muss einen graphen in eine 300x300 pixel große picturebox zeichnen.
    Es gibt zwischen 0 und 999 werte in dieser form:

    0= 344
    1= 345
    2= 589
    3= 796
    5= ......


    Wie kann ich die x achse maßstäblich anpassen?
    Da es so viele Punkte gibt, muss ich das ja warscheinlich mit einer schliefe machen, aber mit welcher? ?(

    Das koordinaten system zeichne ich so:

    'experimentiell
    Dim graph As Graphics = Graphics.FromHwnd(p.Handle)
    Dim pen As New Pen(Color.Black, 1)
    Dim pts(9) As PointF

    'coordinate system
    '300 x 300

    pts(0).X = 300
    pts(0).Y = 150
    pts(1).X = 0
    pts(1).Y = 150

    graph.DrawLine(pen, pts(0), pts(1))


    pts(2).X = 150
    pts(2).Y = 0
    pts(3).X = 150
    pts(3).Y = 300

    graph.DrawLine(pen, pts(2), pts(3))
    hat da jemand eine idee?

    felix1432

    P.s die forensuche habe ich benutzt.... ;)
    Hi...

    zuerst musst du die Werte an den Maßstab anpassen.
    Das geht ganz einfach mit ner Dreisatzrechnung - Beispiel erster Wert:

    344/999 = x/300 --> x = 344*300/999

    Heißt für dich: Packe alle Werte in eine ArrayList.
    Nimm dann eine For Each-Schleife, in der du die obrige Rechnung ausführst und die neuen Werte in eine neue ArrayList schreibst. Damit hast du die y-Werte.
    Den Abstand der x-Werte (0 bis ....) auf der x-Achse bekommst du mit der Rechnung 300/[Anzahl der Werte], sodass du letztlich auch eine ArrayList mit x-Werten hast.
    Später durchläufst du beide Listen wieder in einer For Each-Schleife und bekommst auf deine 300x300-PictureBox abgestimmte Werte, die evtl. noch gerundet werden müssen (Math.Round). Die kannst du dann mit DrawPoint oder DrawLine mit dem Grafikkontext der PictureBox zeichnen.

    gruß
    hal2000
    Gruß
    hal2000