Ich habe ein HTML-Canvas-Element und habe einen Pinsel implementiert, der die Ereignisse mousedown
, mousemove
und mouseup
des Canvas-Elements erfasst. Dies alles funktioniert gut für das Zeichnen auf der Leinwand. Ich glaube jedoch nicht, dass es mir gefällt, wie man eine Zeichnung nicht fortsetzen kann, wenn die Maus den Canvas-Strich hinterlässt. Es schneidet irgendwie ab. Es ist sehr unversöhnlich für die Person und meiner Meinung nach nicht sehr benutzerfreundlich.Wie zeichne ich außerhalb eines HTML-Canvas-Elements?
Wenn Sie Microsoft Paint öffnen und mit dem Pinsel oder der Ellipse oder ähnlichem beginnen, können Sie die Maus an einer beliebigen Stelle auf dem Bildschirm ziehen und die Zeichenfläche erneut eingeben, wenn Sie innerhalb der Zeichenfläche beginnen. Es erleichtert beispielsweise auch das Zeichnen von Viertelkreisen in Ecken, da Sie das Ellipsenwerkzeug außerhalb des Bildschirms ziehen können. Ich hoffe das macht Sinn.
Wie auch immer, ich fragte mich, ob es eine Möglichkeit gab, dies mit dem HTML5-Canvas zu implementieren, oder wie ich das umsetzen würde. Der Benutzer müsste nie etwas gesehen haben, das da drüben gezeichnet wäre; es wird meistens nur ein Merkmal für Benutzerfreundlichkeit sein.
Edit: Ein Problem mit vielen dieser Lösungen ist, wie mit Koordinaten umzugehen. Momentan befindet sich meine Leinwand in der Mitte des Bildschirms und die obere linke Ecke der Leinwand ist (0, 0)
und unten rechts ist (500, 500)
. Die Übersetzungsarbeit der Koordinaten muss ebenfalls berücksichtigt werden.
Edit2: Ich habe herausgefunden, dass Sie die Canvas-Grenzen scheinbar gut abziehen können. Sie können beispielsweise negative Breiten, Höhen und Koordinaten angeben, und das Canvas-Element kann damit problemlos umgehen. Im Grunde wird die Lösung wahrscheinlich nur die mousemove
und mouseup
des Dokuments erfassen und nur die x
und y
übersetzen, um in der oberen linken Ecke des Canvas zu starten.
Könnten Sie die Maus erfassen Ereignisse auf dem Fenster selbst und dann an die Leinwand delegieren? – zero298
Vielleicht versuchen Sie ein Beispiel von dem, was Sie gerade haben. Es ist einfacher zu helfen, wenn wir nicht erst unser eigenes "kaputtes" Beispiel neu erstellen müssen. – duncanhall
Vielleicht könnten Sie auch das Canvas-Element in voller Breite und Höhe des Fensters und der Zeichenfläche etwas kleiner in der Leinwand machen? –