Mam element canvas canvas i zaimplementowałem pędzel przechwytujący zdarzenia elementu canvas. To wszystko działa dobrze, rysując na płótnie. Jednak nie sądzę, że podoba mi się, jak nie można kontynuować rysowania, jeśli mysz opuści płótno w połowie suwu. To po prostu to odcina. Jest to dla mnie bardzo nieczytelne, a moim zdaniem mało przyjazne dla użytkownika.Jak rysować poza elementem canvas HTML?
Jeśli otworzysz program Microsoft Paint i zaczniesz rysować pędzlem lub elipsą lub czymś innym, tak długo, jak zaczniesz w obszarze roboczym, możesz przeciągnąć myszą w dowolne miejsce ekranu i ponownie przejść do obszaru roboczego. Ułatwia to również na przykład rysowanie ćwiartek w rogach, ponieważ możesz przeciągnąć narzędzie elipsy poza ekran. Mam nadzieję, że to ma sens.
W każdym razie, zastanawiałem się, czy istnieje sposób na wdrożenie tego z płótnem HTML5 lub jak chciałbym wdrożyć tego typu rzeczy. Użytkownik nigdy nie musiałby widzieć niczego tam narysowanego; będzie to głównie funkcja użyteczności.
Edycja: problemem z wieloma z tych rozwiązań jest obsługa współrzędnych. Obecnie moje płótno znajduje się pośrodku ekranu, a górna lewa strona płótna to (0, 0)
, a dolna prawa to (500, 500)
. Należy również wziąć pod uwagę tłumaczenie współrzędnych.
Edycja2: Dowiedziałem się, że najwyraźniej można zrównać granice płótna. Na przykład można podać ujemne szerokości, wysokości i współrzędne, a element canvas będzie go obsługiwał dobrze. Zasadniczo rozwiązanie prawdopodobnie obejmuje przechwycenie dokumentu mousemove
i mouseup
i po prostu przetłumaczenie x
i y
, aby rozpocząć od lewego górnego rogu obszaru roboczego.
można uchwycić myszy wydarzenia w samym oknie, a następnie przenieść się na płótno? – zero298
Być może spróbuj podać przykład tego, co masz obecnie. Łatwiej nam pomóc, jeśli nie musimy najpierw odtwarzać naszego własnego "zepsutego" przykładu. – duncanhall
Być może mógłbyś również uczynić element canvas w pełnej szerokości i wysokości okna i obszaru rysunku nieco mniejszego w obszarze roboczym? –