Ho un elemento canvas HTML e ho implementato un pennello che cattura gli eventi mousedown
, mousemove
e mouseup
dell'elemento canvas. Tutto funziona perfettamente per disegnare sulla tela. Tuttavia, non penso che mi piaccia come non si possa continuare un disegno se il mouse lascia la tela a metà corsa. In un certo senso lo interrompe. A mio parere è molto spietato per la persona e non molto user-friendly.Come disegnare al di fuori di un elemento canvas HTML?
Se si apre Microsoft Paint e si inizia a disegnare con il pennello o l'ellisse o qualcosa del genere, se si inizia all'interno dell'area di disegno, è possibile trascinare il mouse in qualsiasi punto dello schermo e reinserire la tela ovunque. Inoltre, rende facile, ad esempio, disegnare quarti di cerchio negli angoli perché è possibile trascinare lo strumento di ellisse fuori dallo schermo. Spero che abbia senso.
In ogni caso, mi chiedevo se c'era un modo per implementare questo con la tela HTML5 o come avrei implementato questo tipo di cose. L'utente non avrebbe mai visto effettivamente qualcosa disegnato lì; per lo più sarà solo una funzionalità per l'usabilità.
Modifica: un problema con molte di queste soluzioni è come gestire le coordinate. Attualmente la mia tela è al centro dello schermo e quella in alto a sinistra è (0, 0)
e quella in basso è (500, 500)
. Anche il lavoro di traduzione delle coordinate deve essere considerato.
Edit2: Ho scoperto che a quanto pare è possibile trarre i limiti della tela bene. Ad esempio, puoi fornire larghezze, altezze e coordinate negative e l'elemento canvas lo gestirà bene. Quindi, in pratica, la soluzione probabilmente riguarderà solo l'acquisizione del documento mousemove
e mouseup
e la semplice conversione di x
e per iniziare nell'angolo in alto a sinistra della tela.
Potrebbe catturare il mouse eventi sulla finestra stessa e quindi delegare alla tela? – zero298
Forse prova a postare un esempio di ciò che hai attualmente. È più semplice aiutare se non dovessimo prima ricreare il nostro esempio "spezzato". – duncanhall
Forse potresti anche rendere l'elemento canvas in larghezza e altezza della finestra e l'area di disegno leggermente più piccola all'interno dell'area di disegno? –