AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Verständnisfrage Arc(), und Pie() Funktion!
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von DualCoreCpu · begonnen am 5. Nov 2015 · letzter Beitrag vom 5. Nov 2015
Antwort Antwort
DualCoreCpu
(Gast)

n/a Beiträge
 
#1

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

  Alt 5. Nov 2015, 13:05
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?

Geändert von DualCoreCpu ( 5. Nov 2015 um 13:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 5. Nov 2015, 14:21
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#3

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

  Alt 5. Nov 2015, 16:55
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?

Geändert von DualCoreCpu ( 5. Nov 2015 um 17:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 5. Nov 2015, 17:05
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 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