Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Halbkreis mit LineTo zeichnen? (https://www.delphipraxis.net/70576-halbkreis-mit-lineto-zeichnen.html)

Karstadt 1. Jun 2006 09:47


Halbkreis mit LineTo zeichnen?
 
hallo. weist jemand wie man ein Halbkreis mit LineTo zeichnen kann?

...es gibt eine "möglichkeit" die bei LineTo die Linie ohne Stuffenefekt zeichnen kann. Deswegen möchte ich ein Halbkreis mit LineTo zeichnen.

Ich wei aber nicht wie ich das machen.. kann mir bitte jemand helfen :?:

Karstadt 1. Jun 2006 10:28

Re: Halbkreis mit LineTo zeichnen?
 
..ich habe die Lösung;)
Delphi-Quellcode:

  var i : TImage;  // image zum Anzeigen des Helbkreises
      mx : Integer; // Mittelpunkt x
      my : Integer; // mittelpunkt y
      k : Integer; // Schleifenvariable
      r : Integer; // Rand;
begin
  i:=Image1;
  mx:=i.Width div 2;
  my:=i.Height div 2;
  r:=20;

  i.Canvas.MoveTo(mx+r, my);

  for k:=0 to 180 do
    begin
      i.Canvas.LineTo(Round(mx+r*cos(k*Pi/180)), Round(my-r*sin(k*Pi/180)));
    end;

marabu 1. Jun 2006 10:31

Re: Halbkreis mit LineTo zeichnen?
 
Deutlich schneller wäre Arc() - warum kommt das nicht in Betracht?

Grüße vom marabu

Karstadt 1. Jun 2006 10:38

Re: Halbkreis mit LineTo zeichnen?
 
wie sehen die Ecken aus? ...schau dir einen Posting von mir an, wo ich eine Linie "fast" ohne stuffen zeichne..so was wie antialising... kann das ARC auch?

Robert Marquardt 1. Jun 2006 10:45

Re: Halbkreis mit LineTo zeichnen?
 
Das Stichwort ist Bresenham-Algorithmus. Der laesst sich naemlich auch zum Zeichnen mit Antialiasing und zum Zeichnen von Ellipsen/Kreisen erweitern.
Eine andere Moeglichkeit koennte GDI+ sein, aber da weiss ich nicht was es alles kann.


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