Information Technology Reference
In-Depth Information
5.15 Was fehlt noch?
5.15.1 »isPointInPath(x, y)«
Wie der Methodenname vermuten lässt, liefert isPointInPath() den Wahrheits-
wert true oder false zurück, je nachdem, ob der über die Koordinate x/y ange-
gebene Punkt innerhalb oder außerhalb des aktuellen Pfads liegt. Ein kurzes
Beispiel zeigt die Anwendung und gibt in diesem Fall true beim alert() aus:
context.beginPath();
context.rect(50,50,100,100);
alert(
context.isPointInPath(75,75)
);
Praktisch einsetzbar ist isPointInPath() beim Ermitteln, ob der Benutzer auf
einen bestimmten Bereich des Canvas geklickt hat. Alles, was wir dazu be-
nötigen, ist ein onclick -EventHandler, der über die Mausposition in clientX/
clientY und die Position des canvas -Elements in offsetLeft/offsetTop die
aktuelle x/y -Position in Bezug auf den Canvas-Bereich berechnet:
canvas.onclick = function(evt) {
context.beginPath();
context.rect(50,50,100,100);
alert(
context.isPointInPath(
evt.clientX - canvas.offsetLeft,
evt.clientY - canvas.offsetTop
)
);
};
Leider nimmt isPointInPath() keine Rücksicht auf Transformationen des Pfa-
des: Selbst dann, wenn wir vor der beginPath() -Anweisung das Koordinaten-
system um 200 Pixel nach rechts verschoben hätten, würde ein Klick auf die
Koordinate 75/75 immer noch true melden. Sehr wohl Berücksichtigung fin-
det die Nonzero -Füllregel (vergleiche Abbildung 5.40) beim Ermitteln von In-
nerhalb/Außerhalb; und wie schon in den beiden Code-Beispielen angedeutet
wurde, muss der zu testende Pfad auch nicht unbedingt mit fill() oder stroke()
gezeichnet werden.
Search WWH ::




Custom Search