Einzelnen Beitrag anzeigen

DualCoreCpu
(Gast)

n/a Beiträge
 
#1

Verständnisfrage zur Pie() Funktion

  Alt 9. Nov 2015, 16:15
Hallo,

Leider muss ich noch mal nerven. In diesem Thread hier:
http://www.delphipraxis.net/187210-e...ml#post1320849

hatte ich versucht, eine eigene Pie Funktion zu schreiben, aber inzwischen aufgegeben. Nicht nur, weil ich den Fahler nicht finde, sondern auch, weil ich im WinAPI Verständnis voran kommen will.

Laut MSDN liegt wie bei der Ellipse der Bogen eines Tortenstückes Pie innerhalb eines mit anzugebenden Rechteckes.

Nun meine Fragen:

In Luckies Demo befindet sich folgende Pie() Funktion:

Pie(WndDC, 300, 110, 500, 200, 310, 110, 200, 260);

Das ergibt folgendes Rechteck als Schablone für den Ellipsenbogen:

Leider kann ich hier in meinem ersten Beitrag keine Dateien mehr anhängen. Deshalb hole ich das in meinem nächten Folgebeitrag nach.

Der Mittelpunkt des Rechteckes und so auch der Ellipse liegt demnach bei:

Xm := ((500 - 300) div2) + 300

Xm := (200 div 2) + 300

Xm := 100 + 300

Xm = 400

Ym := ((260 - 110) div 2) + 110

Ym := (150 div 2) + 110

Ym := 75 + 110

Ym := 185

So weit, so gut.

Aber nach MSDN Doku sind die beiden letzten x,y Kooridinaten die Enddpunkte der Strahlen, faktisch die Schnittpunkte der Strahlen mit der Ellipse, die aber nach Definition innerhalb des Rechteckes liegt.

Aber der Endpunkt des Zweiten Strahles liegt außerhalb des die Ellipse umschließenden Rechteckes:

X = 200 ---> Kleiner als X = 300
Y = 260 ---> untere Kante des Rechteckes, ist nur im Punkt Xm,Ym Schnittpunkt zwischen Ellipse und Rechteck.

Warum wird dann dennoch das Tortenstück gezeichnet. Das MSDN sagt, in der Funktion werden keine Koordinatenanpassungen vorgenommen, heißt für mich, wenn die Koordinaten falsch sind, wird nichts gezeichnet.

Wo liegt hier mein Denkfehler.

Ich beziehe mich hier auf die Windows API Originalfunktion Pie().

[EDIT]
In meiner Vorschau wird das Rechteck korrekt angezeigt. Warum dann nicht im abgesendeten Beitrag?
[/Edit]

Geändert von DualCoreCpu (10. Nov 2015 um 11:04 Uhr)
  Mit Zitat antworten Zitat