Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Arc( z,e,i,c,h,n,e,n) 1/4 Kreis (https://www.delphipraxis.net/129446-arc-z-e-i-c-h-n-e-n-1-4-kreis.html)

thomas2009 19. Feb 2009 11:15


Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
normalerweise könnte man mehrere Schnitt-Linien beim zeichnen einer Ellipse eingeben
Delphi-Quellcode:
canvas.arc(0,100, 100,200, 200,150,0,150); // 1/2 Kreis
Nun möchte ich einen 1/4 Kreis zeichnen über 2 Schnitt-Linien :
Delphi-Quellcode:
canvas.arc(0,100, 100,200, 200,150,0,150,  50/200,50,100); // 1/4 Kreis
// aber wird nicht mehrere Punkte akzeptiert !!!
[edit=Matze]Bild angehängt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit]

fkerber 19. Feb 2009 11:23

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
Hi!

Könntest du das Bild bitte als Anhang hier hochladen und aus dem Beitrag entfernen?
Dann bliebe es auch erhalten, falls der externe Server mal down ist und die Ladezeit des Threads würde sich auch verringern. ;)


Danke!

Ciao, Frederic

DeddyH 19. Feb 2009 11:28

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
Versuch es mal testhalber hiermit:
Delphi-Quellcode:
Canvas.Arc(10,10,150,150,150,80,80,10);
Und dann schau noch mal in die Hilfe ;)

thomas2009 19. Feb 2009 11:37

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
Zitat:

Zitat von DeddyH
Versuch es mal testhalber hiermit:
Delphi-Quellcode:
Canvas.Arc(10,10,150,150,150,80,80,10);
Und dann schau noch mal in die Hilfe ;)

Danke für den Tipp

Stimmt, du hasst das Problem gelöst mit einer einzigen Schnitt-Line
Also, man kann nur eine Schnitt-Linie eingeben

DeddyH 19. Feb 2009 12:24

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
Nein. Die ersten 4 Zahlen definieren das umgebende Rechteck der Ellipse. Die nächsten beiden definieren den Punkt, durch den die erste Schnittlinie ausgehend vom Mittelpunkt der Ellipse verläuft. Die letzten beiden definieren den Punkt, durch den die zweite Schnittlinie gegen den Uhrzeigersinn verläuft. Tauscht man also diese beiden Punkte aus, hat man statt eines 1/4 Kreises einen 3/4-Kreis.

thomas2009 19. Feb 2009 14:10

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
Delphi-Quellcode:
Canvas.Arc({Rechteck=}10,10,150,150,  {Sehnenlänge=}150,80,80,10);// Oder ?

Luckie 19. Feb 2009 14:23

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
Ich möchte die Bitte von fkerber noch mal wiederholen. Bitte pack das Bild in den Anhang zu deinem Thread. Dann bleibt es uns auch erhalten, wenn es vom Server gelöscht wird und das Laden der Seite geht schneller. Du kannst dies tun, in dem du deinen ersten Beitrag entsprechend editierst.

himitsu 19. Feb 2009 14:24

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
siehe Delphi-Referenz durchsuchenArc
Delphi-Quellcode:
Canvas.Arc(
  {Rechteck=}10,20,150,160,
  {Sehne 1=10:150,20:50,}150,80,
  {Sehne 2=10:150,20:50,}80,10
);

// a:b = Mittelpunkt zwischen a und b,
// also 10:150,20:50 = Mittelpunkt des Rechtecks um die Ellipse
sozusagen je der Endpunkt der Sehnen ... der Startpunkt ist die Kreismitte

DeddyH 19. Feb 2009 14:26

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
Liste der Anhänge anzeigen (Anzahl: 1)
Siehe Anhang.

himitsu 19. Feb 2009 15:15

Re: Arc( z,e,i,c,h,n,e,n) 1/4 Kreis
 
hab hier mal schnell was zusammengetippt

Übernimmt den Mittelpunkt, Durchmesser (Diameter), sowie den Start- und Endwinkel im Bogenmaß.

Delphi-Quellcode:
Type TCanvasEx = Class(TCanvas)
  Public
    Procedure Arc   (X, Y, D:     Integer; S, E: Single); Overload;
    Procedure Arc   (X, Y, Dh, Dv: Integer; S, E: Single); Overload;
    Procedure Chord (X, Y, D:     Integer; S, E: Single); Overload;
    Procedure Chord (X, Y, Dh, Dv: Integer; S, E: Single); Overload;
    Procedure Ellipse(X, Y, D:     Integer);              Overload;
    Procedure Ellipse(X, Y, Dh, Dv: Integer);              Overload;
    Procedure Line  (X1, Y1, X2, Y2: Integer);            Overload;
  End;
[add]
Wer jetzt fragt, warum nicht den Radius ... hatte ich erst, aber da kann man den Durchmesser ja nur in 2er-Schritten einstellen.

Dh und Dv sind der horizontale bzw. vertikale Durchmesser

[edit]
neuer Anhang siehe #16


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.
Seite 1 von 3  1 23      

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