Саньвэйбайпянь
Текущая версия открытого исходного кода — демонстрационная, и она предназначена для использования на одном компьютере. Дизайн пользовательского интерфейса относительно прост, а функциональность не является полностью завершённой. В этой демонстрационной версии открытого исходного кода были представлены широко используемые инструменты для рисования, такие как бесконечный холст (перетаскивание), карандаш, лазерная указка, круг, прямоугольник, ластик, текст, отмена, возврат, снимок экрана и другие. В будущем будет выпущена более зрелая версия с интегрированными функциями для проведения конференций, работы с документами, синхронного обновления данных в реальном времени, онлайн-общения и управления пользователями. Одновременно будет переработан дизайн пользовательского интерфейса, и впоследствии будет предоставлен адрес для ознакомления с опытом использования.
Адрес для демонстрации: https://canvas.makeit.vip/
const stage = new Stage({container: `canvas's container id`});
const layer = new Layer();
stage.add(layer);
При инициализации Stage необходимо вручную инициализировать слой и добавить его в текущий Stage. После завершения инициализации все операции рисования будут выполняться в текущем слое. В Stage можно бесконечно добавлять холсты (Canvas), а также поддерживать бесконечное добавление слоёв (Layer) в каждом Canvas.
src
├─assets статические ресурсы
│ ├─fonts шрифты (iconfont)
│ ├─images изображения
│ └─styles стили
│ └─canvas компоненты
├─components
│ └─canvas холст
│ ├─shapes графические классы
│ ├─tools инструменты для холста
│ └─workers задачи для многопоточности
├─router управление маршрутизацией
├─store управление состоянием
│ └─stage состояние Stage
├─utils общие инструменты
└─views представления
└─canvas представление Canvas
canvas
├─Base.ts базовый класс
├─Canvas.ts класс холста
├─Cursor.ts класс курсора
├─Events.ts класс событий
├─Layer.ts класс слоя
├─Point.ts класс координат
├─Shape.ts графический класс
├─Stage.ts центральный класс
├─Throttle.ts класс регулирования
├─Tools.ts класс инструментов
├─Utils.ts общий класс инструментов
├─... другие базовые/общие классы ...
├─shapes
│ ├─Arc.ts круглый класс
│ ├─Rect.ts прямоугольный класс
│ └─... дополнительные инструменты...
├─tools
│ ├─Arrow.ts стрелка
│ ├─Circular.ts круг
│ ├─Drag.ts перетаскивание
│ ├─Eraser.ts ластик
│ ├─Laser.ts лазерная указка
│ ├─Line.ts прямая линия
│ ├─Pencil.ts карандаш
│ ├─Rect.ts прямоугольник
│ ├─Screenshot.ts снимок экрана
│ ├─Selection.ts выделение
│ ├─Text.ts текст
│ └─... больше реализаций классов инструментов...
└─workers
│ ├─rect.worker.ts задача для прямоугольника
| ├─points.worker.ts задача для координат
| └─socket.worker.ts задача для сокета
views
├─Backward.vue шаг назад
├─Brush.vue инструмент «кисть»
├─Document.vue управление документами
├─Drag.vue перетаскивание холста (бесконечный холст)
├─Eraser.vue ластик
├─Forward.vue шаг вперёд
├─Import.vue импорт документов
├─Index.vue главная страница
├─Layers.vue управление слоями
├─Palette.vue палитра цветов
├─Screenfull.vue полноэкранный режим
├─Screenshot.vue снимок экрана
├─Selection.vue выделение
├─Stages.vue холсты
├─Text.vue текстовый инструмент
├─Thickness.vue толщина кисти
└─Users.vue управление пользователями
1. Создать новый класс инструмента (src/components/canvas/tools).
2. Класс инструмента должен наследовать от класса Tools и реализовывать интерфейс MiTools.
3. Зарегистрировать инструмент с помощью метода Stage.register(tool) или в методе Stage.registerTools().
npm install установить проект (установить зависимости)
npm run serve локальный запуск
npm run build:dev строить проект (development)
npm run build:pro строить проект (production)
npm run test:unit юнит-тестирование
npm run lint проверка синтаксиса
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )