Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
Delphi 10.4 Sydney
|
AW: Canvas.Freihandlinie
27. Dez 2013, 13: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 13:55 Uhr)
Grund: Statt A := Canvas.Pen.Width einfach A := 1
|
|
Zitat
|