Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Eigenes Shape anklickbar machen

  Alt 27. Jan 2007, 23:50
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 Delphi-Referenz durchsuchenTCanvas.Pie zeichnen, der wiederum die Windows-API-Routine Pie() aufruft. Wenn man den Aufruf dieser Routine mit MSDN-Library durchsuchenBeginPath und MSDN-Library durchsuchenEndPath klammert, dann werden die Zeichenoperationen intern nur gespeichert und nicht auf dem Ausgabegerät ausgegeben. Mit MSDN-Library durchsuchenPathToRegion 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 MSDN-Library durchsuchenFillRegion die soeben ermittelte Region füllen. Die Abfrage, ob ein gegebener Punkt in der Region liegt, läßt sich mit MSDN-Library durchsuchenPtInRegion 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 MSDN-Library durchsuchenDeleteObject wieder freizugeben.

Gruß Hawkeye
  Mit Zitat antworten Zitat