So nem wir mal an du willst in ein Zeichenbereich mit der Größe 300x300px zeichnen. Auf einem TImage z.B.
Als erstes legst du eine Funktion an, die den Wert deiner Quadratischen Funktion zurückgibt(dann kannst du nachher die Funktion leicht ändern).
Code:
function graph(x: Integer): Integer;
begin
result:=x*x; //Beispielfunktion
end;
Dann bei der Zeichenroutine legst du folgende Variablen fest. Dann werden in einer for-Schleife alle x Werte durchgegangen und der y-Wert dazu gezeichnet.
Dazu muss erstmal der zurückgegebene Wert
Code:
procedure TForm1.draw(dest: TCanvas;width,height: Integer);
var x,y: Integer; //x- und y-Werte im Zahlenbereich
i,j: Integer; //x- und y-Werte im Zeichenbereich
begin
i:=0;
x:=i-(width div 2); //damit wird der x-Wert von der Mittedes Bildes aus nach rechts gezeichnet
y:=graph(x);
j:=(height div 2)-y; //damit wird der y-Wert von der Mitte des Bildes aus nach oben gezeichnet
dest.MoveTo(0,j);
for i:=1 to width-1 do
begin
x:=i-(width div 2);
y:=graph(x);
j:=(height div 2)-y; //damit wird der y-Wert von der Mitte des Bildes aus nach oben
gezeichnet
dest.LineTo(i,j);
end;
end;
Das ganze kannst du dann so aufrufen:
Form1.draw(Image1.Canvas,Image1.Width,Image1.Height);
Falls du das alles oft neuzeichnen musst, ist es empfehlenswert Form1.DoubleBufffered(da is jez irgendwo in schreibfehler drin sry) auf True zu setztn. Auf die Zeichenfläche des Formulars:
Form1.draw(Canvas,ClientWidth,ClientHeight);
solltest du gar nicht zeichnen, da es immer ziemlich flackert. Dann lieber ein Image machen, was sich bei Größenänderung des Formulars mit ändert. Dazu Autosize von dem Image auf True und bei Form_OnResize dann das hier
Code:
Image1.Left:=0;
Image1.Top:=0;
Image1.Picture.Bitmap.Width:=ClientWidth;
Image1.Picture.Bitmap.Height:=ClientHeight;
Dann auf das Image zeichnen.
Falls du wissen willst, wie de damit in die Funktion rein/rauszoomen kannst, oder dich hin und herbewegen kannst.... musste mir 10€ auf mein Bankkonto überbuchen. Sende mir dazu einfach ne EMail.

Nene nur n Scherz! Frag einfach dann danach. Will hier nicht ewig viel umsonst posten.
@Van-Fanel: Coole Idee eigentlich, wär ich wohl nich auf sowas gekomme. Aber so hier is besser, wegen anderen möglichen Funktionen.
Wenn man die Funktion selber im Programm(als Benutzer) eingeben können soll, wirds schon schwieriger. ne einfache Methode kann ICH da nich sagn..
Hoffe ich hab geholfen. Bei Unverständnis bitte fragn.