Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Canvas.Freihandlinie

  Alt 27. Dez 2013, 12:36
Jo Frank, funzt prima. Die einfachsten Lösungen sind doch oft die besten.

Delphi-Quellcode:
procedure SketchLine(Canvas: TCanvas; AX1, AY1, AX2, AY2: integer);
const
  N = 11;
var
  X1, X2, Y1, Y2: double;
  I, A: integer;
begin
  for I := 1 to N do
  begin
    if (I = 1) or (I = N) then
      A := 0
    else
      if Odd(I) then
        A := 1
      else
        A := -1;
    X1 := AX1 + (AX2 - AX1) / N * (I - 1);
    X2 := A + AX1 + (AX2 - AX1) / N * I;
    Y1 := AY1 + (AY2 - AY1) / N * (I - 1);
    Y2 := A + AY1 + (AY2 - AY1) / N * I;
    Canvas.MoveTo(Round(X1), Round(Y1));
    Canvas.LineTo(Round(X2), Round(Y2));
  end;
end;

procedure TForm2.SketchLineButtonClick(Sender: TObject);
begin
  SketchLine(Canvas, 10, 10, 400, 150);
end;

Geändert von Bjoerk (27. Dez 2013 um 12:55 Uhr) Grund: Statt A := Canvas.Pen.Width einfach A := 1
  Mit Zitat antworten Zitat