![]() |
funktion zeichen
ich möchte eine funktion anzeigen lassen. aber ich komm einfach nicht weiter. bei y=x und y=3x etc klappt es, auch bei x*x aber sobald ich zB x+5 versuche, wird der graph total schief. von anderen möglichen funktionen mal abgesehen (probleme mit y-achse)
hier mein code: ----------------------------------------------------------------
Delphi-Quellcode:
----------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var i,xn,yn, fx, fy:integer; //i=x, begin xn:=image1.Canvas.PenPos.X; // Koordinatenursrung bei (100,100) yn:=image1.Canvas.PenPos.Y; image1.Canvas.Pen.Color:=clRed; begin // f(i)=y for i:=-100 to 150 do fx:=i; // x wert setzen fy:=round(i*5); // y wert setzen (funktion i*5, zum testen andere funktion eintragen) image1.Canvas.moveTo(xn,yn); // mitte auf koord. ursprung setzen Image1.Canvas.LineTo(xn+fx,yn-fy); // linie zeichnen ich bin mit sicher, es lässt sich ganz einfach lösen [edit=Matze][delphi]-Tags eingefügt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit] |
Re: funktion zeichen
Deine Formatierung ist durcheinander.
Delphi-Quellcode:
Da gehörert ein Begin...End drum. Aber was macht das begin mitten im Quelltext?
for i:=-100 to 150 do
fx:=i; // x wert setzen fy:=round(i*5); // y wert setzen (funktion i*5, zum testen andere funktion eintragen) image1.Canvas.moveTo(xn,yn); // mitte auf koord. ursprung setzen Image1.Canvas.LineTo(xn+fx,yn-fy); // linie zeichnen Auf andere Fehler hab ichs jetzt nicht überprüft. Du solltest deine Quelltexte ordnetlich einrücken und formatieren. |
Re: funktion zeichen
Irgendwie hast du begin und end falsch gesetzt. Müsste das nicht eher so aussehen?
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i,xn,yn, fx, fy:integer; //i=x, begin xn:=image1.Canvas.PenPos.X; // Koordinatenursrung bei (100,100) yn:=image1.Canvas.PenPos.Y; image1.Canvas.Pen.Color:=clRed; // f(i)=y for i:=-100 to 150 do begin fx:=i; // x wert setzen fy:=round(i*5); // y wert setzen (funktion i*5, zum testen andere funktion eintragen) image1.Canvas.moveTo(xn,yn); // mitte auf koord. ursprung setzen Image1.Canvas.LineTo(xn+fx,yn-fy); // linie zeichnen end; |
Re: funktion zeichen
Also du hast da generell ein bisschen was mit den Variablen durcheinander gebracht. Ich habe mal aus reiner Langeweile die Funktion ein wenig verbessert und meinem Geschmack angepasst. :mrgreen:
Delphi-Quellcode:
Mit freundlichen Grüßen,
function f(i: Integer): Integer;
begin result := 2*i+100; end; procedure TForm1.Image1Click(Sender: TObject); var i, xn, yn, fx, fy: integer; LastPoint: TPoint; Buffer: TBitmap; begin Buffer := TBitmap.Create; Buffer.Width := Image1.Width; Buffer.Height := Image1.Height; xn := Buffer.Canvas.ClipRect.Right div 2; yn := Buffer.Canvas.ClipRect.Bottom div 2; Buffer.Canvas.TextOut(10, 10, IntToStr(-xn)); Buffer.Canvas.Pen.Color := clBlue; Buffer.Canvas.moveTo(0, yn); Buffer.Canvas.LineTo(Image1.Canvas.ClipRect.Right, yn); Buffer.Canvas.moveTo(xn, 0); Buffer.Canvas.LineTo(xn, Image1.Canvas.ClipRect.Bottom); Buffer.Canvas.Pen.Color := clRed; for i := -xn to 2*xn do begin fx := i; fy := round(f(fx)); // Ist einfacherer als die naechsten Zeilen bis zum "end;", // sieht aber etwas komischer (verpixelt / nicht durchgehend) aus: // Buffer.Canvas.Pixels[xn+fx, yn-fy] := clRed; if i = -xn then // erster Durchlauf LastPoint := Point(xn+fx, yn-fy); Buffer.Canvas.MoveTo(xn+fx, yn-fy); Buffer.Canvas.LineTo(LastPoint.x, LastPoint.y); LastPoint := Point(xn+fx, yn-fy); end; Image1.Picture.Assign(Buffer); end; Valle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz