Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   "Runde" Linie auf TCanvas (https://www.delphipraxis.net/151357-runde-linie-auf-tcanvas.html)

Delphi-Narr 14. Mai 2010 13:35


"Runde" Linie auf TCanvas
 
Hallo,
gibt es einen Befehl auf dem Canvas, der eine abgerundete Linie zeichnet?
Also man gibt 3 Punkte an und es wird eine Linie Punkt 1,2 und 3 gezeichnet, die jedoch abgerundet wird (So ähnlich wie bei Paint diese Schlängellinie "Bögen").

Liebe Grüße!

Neutral General 14. Mai 2010 13:36

Re: "Runde" Linie auf TCanvas
 
Hallo,

Dazu kannst du die Methode Canvas.Arc benutzen ;)

Gruß
Neutral General

mkinzler 14. Mai 2010 13:36

Re: "Runde" Linie auf TCanvas
 
Von Haus aus kann Canvas keine Bezier-Splines

Medium 14. Mai 2010 13:43

Re: "Runde" Linie auf TCanvas
 
Ein Bezier-Spline würde auch nicht durch Punkt 2 gehen, und braucht an sich 4 Punkte ;) (Ich weiss... Klugscheisserei. Aber ist Freitag, da kann ich nicht anders :stupid:)


Edit: Um etwas mehr "Fleisch" zu liefern: Ein "Bogen" ist mit 3 Punkten unterdefiniert. Du musst wenn dann, ein paar mehr Annahmen machen, oder mehr Daten haben. Ein Kreis ist z.B. durch 3 Punkte eindeutig definiert, so dass du diesen Kreis zeichnen könntest, und nur das Segment, dass den mittleren Punkt beinhaltet beibehälst. Alternativ könntest du ein Bei Google suchenCardinal Spline nehmen, musst dann aber für die Endpunkte eine Strategie haben, da diese an sich nicht erreicht werden (Verdopplung der Punkte, Extrapolation weiterer Punkte). Dann gäbe es noch B-Splines, wo man aber ein Fitting-Prozess anwenden muss, um interne Punkte wirklich zu berühren.

Die erstmal wichtige Aussage ist: So etwas bringt TCanvas nicht fertig und einfach mit, da wäre Handarbeit angesagt.

Fussball-Robby 14. Mai 2010 20:01

Re: "Runde" Linie auf TCanvas
 
Zitat:

Zitat von mkinzler
Von Haus aus kann Canvas keine Bezier-Splines

Canvas.PolyBezier() ?

Noedel 14. Mai 2010 20:55

Re: "Runde" Linie auf TCanvas
 
Liste der Anhänge anzeigen (Anzahl: 1)
[OT]

Hier hat aktuell (14.05.2010, 21:50) jemand 1337 Beiträge verfasst! (fällt mir nur gerade so auf :) ) :dancer2: :dp: :dancer:
unten ein kleiner Screenshot =)

[/OT]

Wolfgang Mix 14. Mai 2010 21:06

Re: "Runde" Linie auf TCanvas
 
Zitat:

Zitat von Noedel
[OT]

Hier hat aktuell (14.05.2010, 21:50) jemand 1337 Beiträge verfasst! (fällt mir nur gerade so auf :) ) :dancer2: :dp: :dancer:
unten ein kleiner Screenshot =)

[/OT]

Die Beiträge werden seit Beitritt zur DP gezählt,
oder was meinst du?

Neutral General 15. Mai 2010 00:33

Re: "Runde" Linie auf TCanvas
 
Zitat:

Zitat von Wolfgang Mix
Zitat:

Zitat von Noedel
[OT]

Hier hat aktuell (14.05.2010, 21:50) jemand 1337 Beiträge verfasst! (fällt mir nur gerade so auf :) ) :dancer2: :dp: :dancer:
unten ein kleiner Screenshot =)

[/OT]

Die Beiträge werden seit Beitritt zur DP gezählt,
oder was meinst du?

1337 :wink:

SirThornberry 15. Mai 2010 00:38

Re: "Runde" Linie auf TCanvas
 
Bitte zurück zum Thema. Über die verschiedensten Zahlen und deren Interpretationen könnt ihr aber gern ein neues Thema in Klatsch und Tratsch eröffnen.

Delphi-Narr 15. Mai 2010 09:22

Re: "Runde" Linie auf TCanvas
 
Ich habe gestern auch selbst die Funktion PolyBezier gefunden. Danke!

Also 4 Punkte in einem Array:

Delphi-Quellcode:
var Punkte:Array of TPoint;
begin
     SetLength(Punkte,4);
     Punkte[0]:=Point(StartX,StartY);
     Punkte[3]:=Point(EndeX,EndeY);
     //Punkte[1] und [2] sind dann die Punkte, zu denen abgelenkt wird
     Image1.canvas.polybezier(Punkte);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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