Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
|
Re: funktion zeichen
2. Jan 2009, 23:01
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.
Delphi-Quellcode:
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;
Mit freundlichen Grüßen,
Valle
|
|
Zitat
|