Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Wie kann man mit HRGN arbeiten?

  Alt 18. Jun 2012, 22:38
beiliegende Prozedur ist recht flott, ich verwende sie im Mousemove um Hitregions vorzuselektieren (TPointFDynArray nur weil ich es mit GDI+ verwende, ein normales PointArray tut es auch)

Delphi-Quellcode:
function PointInPolygon(const Points: TPointFDynArray; X, Y: Integer): Boolean;
var
  Count, K, J: Integer;
begin
  Result := False;
  J := High(Points);
  for K := 0 to High(Points) do
  begin
    if ((Points[K].Y <= Y) and (Y < Points[J].Y)) or ((Points[J].Y <= Y) and (Y < Points[K].Y)) then
    begin
      if ((Points[J].Y - Points[K].Y)<>0) and (X < (Points[J].X - Points[K].X) * (Y - Points[K].Y) / (Points[J].Y - Points[K].Y) + Points[K].X) then
      begin
        Result := not Result;
      end;
    end;
    J := K;
  end;
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat