Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Verständnisfrage Arc(), und Pie() Funktion! (https://www.delphipraxis.net/187188-verstaendnisfrage-arc-und-pie-funktion.html)

DualCoreCpu 5. Nov 2015 12:05

Verständnisfrage Arc(), und Pie() Funktion!
 
Hallo,

ich beschäftige mich gerade ein wenig mit dem Windows Api, habe deshalb die MSDN Beschreibung der beiden Funktionen studiert. Da steht zur Arc() Funktion folgendes:

Zitat:

The points (nLeftRect, nTopRect) and (nRightRect, nBottomRect) specify the bounding rectangle. An ellipse formed by the specified bounding rectangle defines the curve of the arc. The arc extends in the current drawing direction from the point where it intersects the radial from the center of the bounding rectangle to the (nXStartArc, nYStartArc) point. The arc ends where it intersects the radial from the center of the bounding rectangle to the (nXEndArc, nYEndArc) point. If the starting point and ending point are the same, a complete ellipse is drawn.
...center of the bounding rectangle ????

Das heißt, das vom Mittelpunkt (center) des Rechteckes, welches den Bogen umschließt gezeichnet wird.

Das hieße, daß der Mittelpinkt des Kreis- oder Ellipsenbogens nicht die rechte untere oder linke obere Ecke oder Vis a Vis wäre. Je nachdem, ob der Bogen bei einem Fenster mit runden Ecken an der linken, rechten, oberen oder unteren Ecke läge.

Plausibler wäre mir aber, wenn der Bogen von der linken unteren zur rechten oberen, linken oberen zur rechten unteren, rechten oberen zur linken unteren .... verlaufen würde. Allerdings müsste dann noch festgelegt werden können, ob der Bogen konvex oder konkav zu verlaufen hat.

Wie das letzere festgelegt wird, habe ich noch gar nicht verstanden.

Da ich aber zur Übung des Umgangs mit den API Funktionen mal die Arc() Funktion und danach die Pie Funktion selber schreiben will, es gibt ja noch die SetPixel Funktion und die Linienfunktion, mit deren Hilfe ich den Bogen und das Tortenstück zeichnen könnte. frage ich hier, wie der Bogen unter Zuhilfenahme der der Arc() und Pie() Funktion übergebenen Paramter zu zeichnen ist.

Pseudocode genügt. Pseudocode der mir die oben eingefügte englische Beschreibung der Arc Funktion verständlich macht. Ich gehe davon aus, das Windows beim Zeichnen von Buttons mit runden Ecken ebenfalls die Arc() Funktion benutzt und dann ja wissen muss, nicht nur Start und endpunkt des Bogens, sondern auch, ob der konvex oder konkav verlaufen muss (untere oder obere Ecken).


Hatte nicht mal hier ein User ein Tutorial zum Widows API geschrieben?

Kann bitte mir mal einer den Link da hin geben?

Uwe Raabe 5. Nov 2015 13:21

AW: Verständnisfrage Arc(), und Pie() Funktion!
 
Das bounding rectangle ist das Rechteck, das die vollständige Ellipse umschließt. Daher sind so auch nur achsparallele Ellipsen möglich. Der Mittelpunkt der Ellipse ist somit identisch zum Mittelpunkt des Rechtecks.

DualCoreCpu 5. Nov 2015 15:55

AW: Verständnisfrage Arc(), und Pie() Funktion!
 
Aha, alles klar. Bei Fenstern mit rinden Ecken ergibt sich ja immer ein Viertelkreis, Start und Endpunkt des Bogens liegen auf der Rechteckkante. In anderen Situeationen braucht es dann die Winkelfunktionen, um Start- und Endpunkt zu berechnen?

Wenn Start und Endpunkt des Bogens innerhalb des Rechteckes liegen?

Uwe Raabe 5. Nov 2015 16:05

AW: Verständnisfrage Arc(), und Pie() Funktion!
 
Zitat:

Zitat von DualCoreCpu (Beitrag 1320698)
Kann dieses Rechteck beliebig in der Ebene liegen?

Nun:

Zitat:

The points (nLeftRect, nTopRect) and (nRightRect, nBottomRect) specify the bounding rectangle.
Da hast du gerade mal zwei X- und zwei Y-Werte. Demnach kann das Rechteck nur achsparallel sein.


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