Einzelnen Beitrag anzeigen

Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#37

Re: Quadratische fkt. Zeichnet nicht

  Alt 13. Mär 2008, 20:41
Also ich gebe jetzt einfach mal ein Beispiel, wie ich das machen würde (vielleicht nicht die beste Methode, aber sie funktioniert und ist einfach zu verstehen - hoffe ich jedenfalls):

Du nimmst dir ein Image und gibst ihm eine gewisse Breite (Width, z.B. 800) und Höhe (Height, z.B. 600). Nun hat die Imagekomponente sein eigenes Canvas (=Leinwand). Auf diesem Canvas kannst du jedes einzelne Pixel ansprechen und färben oder auch Linien, Kreise, Rechtecke, etc. zeichnen. Als Angabe gibtst du immer die Pixel an und zwar ist die Position 0|0 oben links in der Ecke und 800|600 unten rechts.
Hoffe das hast du soweit verstanden, wenn du Fragen zu Befehlen des Canvas hast, siehe hier:
http://www.delphi-treff.de/tipps/grafik/tipp/263/

Und jetzt die Idee zum Zeichnen. Als erstes malst du ein Koordinatenkreuz mit den Methoden
Delphi-Quellcode:
//Koordinatenkreuz zeichnen
Image1.Canvas.MoveTo(Image1.Width div 2,0); //Cursor bewegt sich oben mitte
Image1.Canvas.LineTo(Image1.Width div 2,Image1.Height); //Cursor zeichnet unten mitte
Image1.Canvas.MoveTo(0, Image1.Height div 2); //Cursor bewegt sich nach links mitte
Image1.Canvas.LineTo(Image1.Width, Image1.Height div 2); //Cursor zeichnet rechts mitte
Nun legst du zwei Variablen an: EinheitX und EinheitY, beide vom Typ Single. Diese Einheiten brauchst du um eine Skalierung hinzubekommen und den Graph richtig zu zeichnen.
EinheitX ist leicht auszurechnen: Teile einfach die Breite des Images durch die Anzahl deiner X.
Wenn du z.B. den Graphen von -5 bis 5 X zeichnen willst, dann hats du 11x (Die 0 zählt mit) also istEinheitX := Image1.Width / 11; Bei EinheitY brauchst du den maximalen Funktionswert für deine X-Spanne, also wenn du die Funktion X^2 zeichnest (von X = -2 .. 2) dann ist der maximale Funktionswert = 4, da 2^2 bzw. -2^2 = 4 ist.
Also rechnest du
EinheitY := Image1.Height / 4 * 2 Das "*2" ist wichtig, weil du ja das feste Koordinatenkreuz in der Mitte hast.
Wie du den maximalen Funktionswert herausbekommt kannst du ja mal überlegen. Tipp: Schleife

Nun musst du hinterher nur noch zeichnen und die Skalierungen vornehmen, aber versuche erstmal das oben genannte zu verstehen. Bei Fragen immer her damit. Ich werde mein Bestes versuchen

mfg Looper

[Edit] Gib nicht auf, wenn du den Grundgedanken raus hast, is es gnaz leicht!
  Mit Zitat antworten Zitat