JavaScript

Как рисовать и сохранять рисунок в JavaScript?

Глубоко JS не знаю, поэтому нужен ваш совет куда копать, возможно ли и как лучше реализовать.

Хочу сделать программу для андройда на js+ html по изучению англ слов. Задумка такая- что часть экрана - слово, вторая- перевод. Все это я уже делал, умею, но теперь хочу дополнение- чтоб была возможность нарисовать или что-то подчеркнуть у каждой из этих половинок экрана. И что это было сохранено. Мне представляется, что эти рисунки можно будет сохранить как строку и следовательно в localStorage.setItem () ; а потом вызывать. так ли это? Как тогда оформить эти два окна где слово- перевод, не просто div как я понимаю. Подскажите куда копать, а может лучший вариант реализации.
Можно создать прозрачный слой canvas, настроенный на рисование (это уже по факту рисунок, который можно сохранить). После интегрировать именно в canvas текст, чтобы он появлялся не в тегах, а на холсте. Ну и по желанию все это можно будет сохранить.

В локальном хранилище это тоже можно сохранить (то, что указал выше), если преобразовать весь готовый холст в base64. Правда это работать будет только на сервере, иначе любые браузеры ругаются на преобразование.

Что на словах, что на деле это не особо легко.
Виталий Лебедев
Виталий Лебедев
59 730
Лучший ответ
если я правильно тебя понял, ты хочешь текст из html перенести на canvas с возможностью рисования, но так что бы можно было сохранить нарисованные дополнения с текстом как картинку?

Говоришь ты знаешь как сделать ввод текста и перевода. В таком случаи мы имеем два текста .
Мы знаем координаты текстов, мы знаем размер шрифта и прочее. Еще у нас есть canvas с нарисованными дополнениями. в таком случаи можно забиндить на нажатие какой-нибудь кнопки перенос текста на canvas. Просто с помощью команды ctx.fillText() отрисовываем тексты на canvas в координатах текстов которые у нас на html. Стили, размер и прочее тоже можно указать в коде. А сохранить это все дело можно кликнув правой кнопкой мыши на canvas и там будет "сохранить картинку как...".

Я бы сделал как-то так наверное, но это далеко не идеальный способ, уверен, есть лучше. Но как пример ._.