Есть ли какой-либо способ взаимодействовать с холстом через настольное приложение?

#google-chrome-extension #desktop-application

#google-chrome-extension #desktop-приложение

Вопрос:

Я пытался разработать расширение Chrome, которое автоматически подключается skribbl.io для развлечения, и я действительно застрял на реализации сглаживания. Это просто слишком медленно. Я пытался понять, как выполнить его параллельно, но, честно говоря, Javascript просто не мое. Мне действительно неудобно с обещаниями и т. Д. Это работает, получая холст skribbl.io использует и отправляет входные данные непосредственно в него.

например

          draw: function (coords) {
            let startMouseCoords = getMouseCoords(coords[0]);
            canvasElement.dispatchEvent(createMouseEvent("mousedown", startMouseCoords));

            for (let i = 1; i < coords.length; i  ) {
                let mouseCoords = getMouseCoords(coords[i]);
                canvasElement.dispatchEvent(createMouseEvent("mousemove", mouseCoords));
            }

            let endMouseCoords = getMouseCoords(coords[coords.length - 1]);
            canvasElement.dispatchEvent(createMouseEvent("mouseup", endMouseCoords));
        },
 

Мне было интересно, есть ли какой-нибудь способ сделать это в настольном приложении, поскольку я чувствую себя намного комфортнее на C или C #, и мне, вероятно, гораздо больше повезло бы заставить алгоритм такого рода работать с приличной скоростью. Есть ли хороший способ сделать что-то подобное через настольное приложение? Возможно, даже браузер на базе Linux, который позволил бы мне взаимодействовать с веб-страницами гораздо более напрямую, вместо того, чтобы проходить через систему расширений Chrome.

Комментарии:

1. Кукольник, Селен и т. Д.

2. Если вы хотите реализовать сглаживание, «лучшим» подходом, вероятно, является реализация его как шейдера WebGL и запуск его в отдельном <canvas> (в контексте WebGL), используя данные, скопированные из исходного 2D-холста. Кроме того, какого черта вы эмулируете движение мыши вместо того, чтобы напрямую использовать Canvas API?