Zitat von
LoCrux:
OK.. Die einfachste Lösung (und auch die schnellste) ist gefunden...
Vorausgesetz, daß sich NUR das Polygon vollständig sichtbar auf einem CANVAS OBJEKT befindet.....
Delphi-Quellcode:
FUNCTION PointInPolygon(const aCanvas:TCanvas;const TestPoint: TPoint):Boolean;
BEGIN
RESULT := aCanvas.Pixles[TestPoint.x,TestPoint.y]<>HINTERGRUNDFARBE
END;
und der funktioniert für jedes X-Beliebige Polygon.
Jap, aber nur unter folgenden Bedingungen:
- Das Polygon ist auf einem Canvas (wie gesagt)
- Das Polygon ist mit einer einheitlichen, eindeutigen Farbe gefuellt
- Diese Farbe ist uns bekannt
Zitat von
LoCrux:
Hat man keinen Darstellung dann gehts auch mit einem temporären Bitmap......
Ja, das wars das aber mit der schnellsten Loesung, denn Canvas-malereien sind relativ langsam
Zudem ist die Loesung mathematisch betrachtet nicht zu gebrauchen: Ein Canvas arbeitet lediglich mit Pixeln und Integers, was zu Rundungsfehlern fuehrt. Damit kann es durchaus passieren, dass ein Wert, der nahe einer Kante liegt, falsch angezeigt wird.
greetz
Mike