Hallo Kostas,
wenn du in die Abgründe des Windows-
API hinabsteigen möchtest, kannst du dein Problem vielleicht lösen. Ein Tortenstück läßt sich mit dem Befehl
TCanvas.Pie zeichnen, der wiederum die Windows-
API-Routine Pie() aufruft. Wenn man den Aufruf dieser Routine mit
BeginPath und
EndPath klammert, dann werden die Zeichenoperationen intern nur gespeichert und nicht auf dem Ausgabegerät ausgegeben. Mit
PathToRegion kann man sie abrufen und in eine
Region umwandeln:
Delphi-Quellcode:
var
Region : HRGN;
begin
BeginPath(Canvas.Handle);
Pie(Canvas.Handle, X1, Y1, X2, Y2, X3, Y3, X4, Y4);
EndPath(Canvas.Handle);
Region := PathToRegion(Canvas.Handle);
end;
Für das Zeichnen der Tortenstücke hast du nun mehrere Möglichkeiten. Du kannst sie ganz normal mit den TCanvas-Methoden zeichnen oder mit
FillRegion die soeben ermittelte Region füllen. Die Abfrage, ob ein gegebener Punkt in der Region liegt, läßt sich mit
PtInRegion durchführen:
Delphi-Quellcode:
if PtInRegion(Region, X, Y) then
// Punkt ist innerhalb des Tortenstücks
else
// Punkt ist außerhalb
Zum Schluß solltest du nicht vergessen, die Region mit
DeleteObject wieder freizugeben.
Gruß Hawkeye