Zeichnen einer Linearen Funktion

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Mischaxd.

    Zeichnen einer Linearen Funktion

    Hallo.
    Ich habe eine aufgabe in der Schule, ein Program zu schreiben, welches nach Angaben von den Koordinaten 2er Punkte den Anstieg und die Verschiebung entlang der y Achse berechnet, und diese Funktion zeichnet.

    Das errechnen von m und n hab ich schon fertig. Das Programm fügt die elemente auch schon in eine Funktionsgleichung ein. Mir fehlt nurnoch das zeichnen dieser Funktion.
    Der Benutzer muss in 4 Textboxen 2 Punkte eingeben (2x und 2y)
    Mein Code sieht soweit so aus :

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Label8.Text = ((TextBox5.Text - TextBox2.Text) / (TextBox3.Text - TextBox1.Text)) <---- da berechnet er m
    Label10.Text = (TextBox2.Text - Label8.Text * TextBox1.Text) <----- da berechnet er n
    Label12.Text = Label8.Text
    Label14.Text = Label10.Text

    End Sub
    End Class


    Das funktioniert erstmal einwandfrei. Wie gesagt Mir fehlt nur noch das zeichnen. Ich weiß leider nicht wie das geht. Könnt ihr mir eventuel helfen? :o
    Ich habe jetzt ein zweites Problem, nähmlich wenn ich mein programm speichere, schließe und diese gespeicherte datei dann öffne, öffnet er nur den code, und nicht den Entwurf, wo ich meine ganzen labels eingebaut habe... Wie kann ich jetzt diesen Entwurf öffnen bzw wie speicher ich ihn?
    Oder wie speicher ich das programm gleich im .exe format??

    Mischaxd schrieb:

    Wie kann ich jetzt diesen Entwurf öffnen bzw wie speicher ich ihn?

    Der ist schon gespeichert: rechts im Projektmappen-Explorer rechtsclick auf die Form -> Ansicht Designer

    Oder im CodeFenster Shift-F7 drücken.

    Bei jedem Ausführen wird es ebenfalls als exe gespeichert, such im drunterliegenden Debug-Ordner.
    Ok das mit dem speichern und wieder abrufen hab ich jetzt verstanden. Dennoch weiß ich immer noch nicht wie man jetzt die funkzion zeichnet. Aus dem Theard, zu dem du mir einen link gegeben hast, zeichnet er mir zwar die x und die y achsen, aber der Graph verläuft nicht so wie ich es mir vorgestellt habe.
    Ich habe eigendlich den Code aus dem theard nur in meinen Code eingefügt, und das ganze sieht jetzt so aus :

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Label7.Text = ((TextBox4.Text - TextBox2.Text) / (TextBox3.Text - TextBox1.Text))
    4. Label8.Text = (TextBox2.Text - Label7.Text * TextBox1.Text)
    5. Label10.Text = Label7.Text
    6. Label12.Text = Label8.Text
    7. Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height)
    8. Dim g As Graphics = Graphics.FromImage(bmp)
    9. g.RotateTransform(270.0F)
    10. g.TranslateTransform(CSng(bmp.Height / -2), CSng(bmp.Width / 2))
    11. Dim w2 As Single = bmp.Width / 2
    12. Dim p As New Pen(Color.Red, 4)
    13. Dim p2 As New Pen(Color.Red, 2)
    14. g.DrawLine(p, 0, -w2, 0, w2) ' x-Achse
    15. g.DrawLine(p, CSng(bmp.Height / -2), 0, CSng(bmp.Height / 2), 0) ' y-Achse
    16. For i = -20 To 20 Step 0.01
    17. g.DrawRectangle(Pens.Black, CSng(gety(i)), CSng(i * 10), 1.0F, 1.0F)
    18. Next
    19. PictureBox1.CreateGraphics().DrawImage(bmp, 0, 0)
    20. End Sub
    21. Function gety(ByVal x As Double) As Double
    22. Return x ^ 2
    23. End Function
    24. End Class


    Kann mir vielleicht wieder einer helfen, den graphen richtig einzustellen?

    Mischaxd schrieb:

    Das ist das ja was ich nicht verstehe.

    Ok, sry.

    In der Methode Function getY kannst Du beliebige Funktionen abhängig von dem Parameter x eingeben. In der Zeile 22 wird getY(i) aufgerufen, d.h. der Code wird die entsprechende Funktion im Bereich -20 bis +20 zeichnen.

    Deine Lineare Funktion müsste die Form y=a*x + b haben, setzt das doch in zeile 28 ein , also Return (a*x +b).

    Wenn Deine x-Werte nicht von -20 bis +20 laufen sollen , so musst Du es in Zeile 21 ändern.