AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas.Freihandlinie

Ein Thema von Bjoerk · begonnen am 27. Dez 2013 · letzter Beitrag vom 27. Dez 2013
Antwort Antwort
Bjoerk

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

Canvas.Freihandlinie

  Alt 27. Dez 2013, 10:10
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".
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Canvas.Freihandlinie

  Alt 27. Dez 2013, 10:19
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.
  Mit Zitat antworten Zitat
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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz