![]() |
Canvas.Freihandlinie
Hat jemand eine Idee, wie man eine Freihandlinie implementieren könnte, die nur durch die beiden Endpunkte definiert ist? Die Line sollte in etwa eine Gerade sein, man sollte eben nur sehen, daß sie "etwas gekraxelt daherkommt".
|
AW: Canvas.Freihandlinie
Dazu mußt einige der Punkte, die auf der Linie liegen, ermitteln und dann von Punkt zu Punkt malen, wobei du die dazwischen liegenden Punkte um einen gewissen Wert in X- und/oder Y-Richtung abweichen läßt.
|
AW: Canvas.Freihandlinie
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 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