Mathematischen Graph zeichnen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von dusti.

    Mathematischen Graph zeichnen

    Hallo,

    ich möchte ein Programm schreiben, mit dem man mathematische Funktionen zeichnen kann. Ich habe schon viel herumprobiert, und gegoogelt. Leider nichts gefunden. Evt. habe ich etwas übersehen. Unter VB 06 habe ich einen Code geschrieben der funktioniert. Nun würde ich den gerne in VB 08 schreiben. Im Vb 06 kann man durch den Syntax .PSet(<x-Koordinate>,<y-Koordinate>) Punkte in eine PictureBox zeichnen. Im 08 gibt es diese Syntax leider nicht mehr. Falls jemand den Befehl für die 08-Version kennt bitte mir sagen. Nachfolgender Code funktioniert unter 06.

    Public Class Form1
    Private Sub cmd_berechnen_Click()
    Dim a, b, c, hoehe, breite, schritt, x, y As Double
    a = Val(txt_a.Text)
    b = Val(txt_b.Text)
    c = Val(txt_c.Text)
    hoehe = Val(txt_hoehe.Text)
    breite = Val(txt_breite.Text)
    zeichenflaeche.Scale (-breite / 2, hoehe / 2)-(breite / 2, -hoehe / 2)
    zeichenflaeche.Line (-breite / 2, 0)-(breite / 2, 0)
    zeichenflaeche.Line (0, hoehe / 2)-(0, -hoehe / 2)
    schritt = breite / 10000
    For x = (-breite / 2) To (breite / 2) Step schritt
    y = a * x ^ 2 + b * x + c
    zeichenflaeche.PSet(x, y)
    Next
    End Sub
    End Class

    Wie kann man außerdem das Koordinatensystem in VB08 zeichnen?

    Hoffentlich kann mir jemand helfen.
    Danke im voraus.
    End Sub
    End Class
    Habe jetzt eine Möglichkeit gefunden den graph zu zeichnen. Wie kann man an den graph heranzoomen mit dem scrollrad der maus? ich habe einen code geschrieben, mit dem man das koordinatensystem mit 2 trackbars verschieben kann, aber nur bevor man die funktion zeichnet. wenn sie gezeichnet ist, ändert sich an der funktion aber nichts mehr.
    wie kann man im programm schreiben, dass es den graph neu zeichnet, sobald man einen wert ändert?

    danke

    hier der code

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_zeichnen.Click
    Dim Zeichnen As Graphics = Picturebox1.CreateGraphics
    Dim x, y, x2, y2, a, b, c, dx, dy, xko, yko, xl, xr, yo, yu As Decimal
    Else : a = txt_a.Text
    b = Val(txt_b.Text)
    c = Val(txt_c.Text)
    Zeichnen.DrawLine(Pens.Black, 0, dy, 1300, dy) '
    Zeichnen.DrawLine(Pens.Black, dx, 0, dx, 600) '
    For xko = 0 To 1300 Step 5
    Zeichnen.DrawLine(Pens.Black, xko, dy - 5, xko, dy + 5)
    Next
    For yko = 0 To 600 Step 5
    Zeichnen.DrawLine(Pens.Black, dx - 5, yko, dx + 5, yko)
    Next
    End If
    For x2 = -1300 To 1300 Step 0.01
    y2 = (a * (x2) ^ 2) + (b * x2) + c
    x = x2 + dx
    y = -y2 + dy
    Zeichnen.DrawRectangle(Pens.Blue, x, y, 1, 1)
    Next
    End Sub
    Du könntest das mit 2 Variablen lösen, die du immer zu der x-, bzw. y-Koordinate hinzuzählst. Mit den Scrollbars änderst du dann diese Variablen.
    Willst du den Graphen immer wieder neu zeichnen lassen, wenn du die Scrollbars bewegst, würde ich erstmal die ganzen befehle zum zeichen in eine eigenen Methode auslagern. Dann kannst du in den entsprechenden Events diese Methode aufrufen und schon wird der Graph neu gezeichnet. Das wird aber recht langsam gehen, wenn du den Graphen immer wieder neu zeichnest. Ich würde den Graphen einmal Zeichnen und dann das komplette Bild einfach verschieben.

    dusti schrieb:


    Du könntest das mit 2 Variablen lösen, die du immer zu der x-, bzw. y-Koordinate hinzuzählst. Mit den Scrollbars änderst du dann diese Variablen.
    Willst du den Graphen immer wieder neu zeichnen lassen, wenn du die Scrollbars bewegst, würde ich erstmal die ganzen befehle zum zeichen in eine eigenen Methode auslagern. Dann kannst du in den entsprechenden Events diese Methode aufrufen und schon wird der Graph neu gezeichnet. Das wird aber recht langsam gehen, wenn du den Graphen immer wieder neu zeichnest. Ich würde den Graphen einmal Zeichnen und dann das komplette Bild einfach verschieben.

    Und wie kann man den graph verschieben?

    P.S. ein dickes Lob von mir. So schnell wie in diesem Forum geantwortet wird ist selten der Fall.
    Mit den ersten zwei Sätzen habe ich eigentlich beschrieben, wie du den Graphen verschieben kannst, aber eventuell war das einfach zu ungenau. Also:
    Du hast zwei Scrollbars für horizontales und vertikales scrollen. Beide Scrollbars sind an jeweils eine Variable "gekoppelt", d.h. wird die Scrollbar bewegt, addierst bzw. subtrahierst du bei der entsprechenden Variable 1. Die SCrollbar für horizontales Scrollen ist mit der Variable xWert verbunden, die für vertikales Scrollen mit der yWert-Variable. Zeichnest du nun den Graphen (sorry, genauer kann ichs nicht beschreiben, da mir der Zugang zu deinem Code fehlt, bzw. ich mich nicht einlesen will :) ), zählst du zu den Punkten immer die Variablen hinzu, also in Pseudocode: DrawPoint(x + xWert, y + yWert). Ist die Variable yWert nun z.B. 5 (weil die Scrollbar für vertikales Scrollen um 5 Einheiten nach oben bewegt wurde), wird so der ganze Graph um 5 Einheiten nach oben verschoben. Eventuell musst du die beiden Werte aber vor dem addieren noch mit 10 oder sogar 100 multiplizieren, damit wirklich eine Verschieben sichtbar wird.