Thema: Delphi funktion zeichen

Einzelnen Beitrag anzeigen

Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: funktion zeichen

  Alt 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
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat