Html5 Canvas-Methode isPointInPath bestimmt nur das letzte Objekt

8

Ein Beispiel hier .

%Vor%

Wenn Sie ohne beginPath schreiben, werden alle Objekte erkannt. Wie erkenne ich Objekte auf der Leinwand oder lasse beginPath aus?

    
Keepq 02.11.2011, 17:08
quelle

2 Antworten

8

Wenn Sie diese Funktion verwenden möchten, müssen Sie den Pfad jedes Mal neu erstellen, wenn Sie den Test durchführen möchten (rufen Sie nicht fill oder stroke auf).

Was ich normalerweise mache, ist meine eigene Point-in-Polygon-Testfunktion oder meine eigene räumliche Datenstruktur, wenn viele Objekte und Geschwindigkeit wichtig sind.

Beachten Sie, dass eine Zeichenfläche nur eine Bitmap ist und nicht die Befehle speichert, mit denen Sie darauf zeichnen. Aus diesem Grund kann der Check nach dem Zeichnen einer Form nicht ausgeführt werden und Sie können nur den aktuellen Pfad testen.

Wenn Sie beginPath aufrufen, wird die vorherige Pfadgeometrie verworfen und Sie haben nur die betroffenen Pixel, wenn Sie fill oder stroke aufgerufen haben.

Vielleicht ist es für Ihren Fall sinnvoll, die Farbe des Leinwandpixels zu überprüfen ...

    
6502 02.11.2011, 18:12
quelle
2

Ich habe gerade gelesen, dass eine neue Ergänzung der Canvas-Spezifikation Path () -Objekte ist. Vermutlich könnten diese gespeichert und anschließend getestet und / oder wiedergegeben werden. Könnte nützlich sein. Wenn ich die Spezifikation richtig verstanden habe.

Ссылка

    
Richard 26.08.2012 18:00
quelle

Tags und Links