einen Kreis zu Fuß zeichen
Hallo,
ich möchte gerne einen Kreis zu Fuß zeichnen. Ich weiß aber nicht wie das geht. Ich glaube irgendwie mit sin und cos oder so. kann mir jemend einen Tip geben??? Achso der Kreis soll mir Canvas gezeichnet werden und es soll nicht mit ellipse gemacht werden. Mit freundlichen Grüßen Christian18 |
Re: einen Kreis zu Fuß zeichen
Hi Christian,
du musst in einer Schleife den Winkel durchgehn und darin die Koordinaten ausrechnen:
Delphi-Quellcode:
Ich weiß jetzt auf die Schnelle aber nicht wie die Funktion heißt, um ein Pixel setzen zu können :oops:
function DegToRad(Deg: Real): Real;
begin return Deg*Pi/180; end; function ZeichneKreis(r: Real); var i: Integer; x, y: Real; begin for i := 0 to 359 do begin x := r*cos(DegToRad(i)); y := r*sin(DegToRad(i)); //Pixel setzen end; end; Greetz alcaeus |
Re: einen Kreis zu Fuß zeichen
Zitat:
Delphi-Quellcode:
;)
Canvas.Pixels[x, y] := clBlack;
|
Re: einen Kreis zu Fuß zeichen
Hi Matthias,
um genau zu sein wäre es
Delphi-Quellcode:
da x und y als Real deklariert sind. :zwinker:
Canvas.Pixels[Trunc(x), Trunc(y)] := clBlack;
Greetz alcaeus |
Re: einen Kreis zu Fuß zeichen
vielleicht solltest du aber keine punkte zeichnen, sonder die punkte mit linien verbinden. Wenn der Kreis sonst zu groß wird kanns dir passieren, dass der kreis nicht richtig verbunden is!
|
Re: einen Kreis zu Fuß zeichen
Hi Christian,
Chimaira hat Recht, das hab ich in meinem Code nicht berücksichtigt. Hier eine Version die funktionieren (müsste)
Delphi-Quellcode:
Greetz
function DegToRad(Deg: Real): Real;
begin return Deg*Pi/180; end; function ZeichneKreis(mx, my: Integer; r: Real); var i: Integer; x, y: Real; begin MoveTo(mx+r, my); for i := 1 to 359 do begin x := r*cos(DegToRad(i)); y := r*sin(DegToRad(i)); LineTo(mx+x,my-y); end; LineTo(mx+r, my); end; alcaeus |
Re: einen Kreis zu Fuß zeichen
@Alc: Fehlt da nicht das MoveTo in der Schleife, so kommt's mir etwas spanisch vor. ;)
Edit: Und vor das MoveTo / LineTo gehört evtl irgend ein Canvas. :roll: |
Re: einen Kreis zu Fuß zeichen
LineTo macht das selbe wie MoveTo, nur dass die Linie noch dazugezeichnet wird. Passt schon so!
[Edit]: Das könnt man einfach mit einem
Delphi-Quellcode:
am anfang und einem end am ende der proc lösen
with canvas do begin
@Alcaeus: :coder: better :mrgreen: :zwinker: :cheers: @supermuckl: wär das beste, aber das komplizierteste... [/Edit] |
Re: einen Kreis zu Fuß zeichen
warum willst du denn ein MoveTo in der Schleife? Als erstes gehst du an den Startpunkt und dann zeichnest du ohne Abzusetzen die Kreislinie.
|
Re: einen Kreis zu Fuß zeichen
ähm leute
anstatt da linien von winkel zu winkel zu zeichnen ( wird bei großen kreisen nich grad schön aussehen ) könntet ihr auch die halben winkel ( kommastellen oder auch winkelminuten genannt ) berechnen und somit einen echten kreis zeichnen via pixel setzen ihr müsstet halt noch bisschen ausbaldovern wie ihr rausrechnen könnt wieviele kommastellen ihr minimal braucht um die auflösung für einen bestimmten radius raus zu rechnen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 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