1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Bping-crysyan

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Крисян

Проектная иконка

npm Скачивания Статус сборки

Веб-платформа для рисования с использованием canvas

Домашняя страница: https://home.cbping.vip/crysyan/

Демо: https://home.cbping.vip/crysyan/demo-index.html

NodeJS


   - npm  install crysyan -g
   - crysyan
   
   Откройте http://localhost:9001 в браузере 

Демо проекта

Содержание

Быстрый старт

  • ВашHTML
<!--<script src="jquery-3.1.1.min.js"></script>-->
<div style="width:1000px; height:1000px;" class="crysyan-designer"></div>
<!-- include the crysyan-designer.js -->
<!--<script src="projectPath/crysyan-designer-min.js"></script>-->
<script src="projectPath/js/crysyan-designer.js"></script>
  • ВашJS
// jQuery
$(".crysyan-designer").CrysyanDesigner({
    canvas: {
        // px
        width: 900,
        height: 500
    },
}, function(designer) {
    console.dir(designer);
});
// Еще один
// var designer=CrysyanDesigner({
//     canvas: {
//         // px
//         width: 900,
//         height: 500
//     },
//     toolbar: {
//         length: 500
//     }
// }, function(designer) {
//     console.dir(designer);
// });
// designer.appendTo(document.getElementsByClassName("crysyan-designer"));

Папки

 /            -->
  css/             --> CSS
  html/           --> Представление
  img/            --> Используется для хранения файлов иконок инструментов
  js/               --> Файлы JavaScript

Совместимость

Не очень точно, так как это основано на различных атрибутах и не было полностью протестировано. Но это может служить вам в качестве ориентира.

Функциональность Chrome Firefox IE
Преобразование canvas в изображение и его сохранение 4+ 3.6(1.9.2) 9+
Поддержка CORS для изображений 13+ (Gecko)8+ Нет поддержки
Запись canvas (видео/webM) 30+ 30+ Нет поддержки

Встроенные возможности

Виджеты

Вы можете использовать конфигурацию для следующих виджетов. Устанавливает виджеты, необходимые для конкретной экземпляризации доски рисования.

config{
    toolbar: {
        widgets:
        ["CursorWidget",
        "PencilWidget",
        "EraserWidget",
        "ImageWidget",
        "UndoWidget",
        "IntoGoWidget",
        "ClearWidget",
        "ShapeWidget",
        "TextWidget"
       ],
    }
    }
  1. Ручка --- PencilWidget для рисования/написания фигур
  2. Ластик --- EraserWidget для стирания/очистки конкретной части фигуры
  3. Изображение --- ImageWidget для добавления внешних изображений
  4. Отмена --- UndoWidget для отмены истории canvas
  5. Повтор --- IntoGoWidget для повтора отмены истории canvas
  6. Очистка --- ClearWidget для очистки canvas
  7. Фигура --- ShapeWidget для рисования графики (квадрат, круг, треугольник)
  8. Текст --- TextWidget для ввода текста

Gulp

  1. Сначала вам нужно установить Node.js и Gulp и плагины Gulp, используемые в gulpfile.js.

  2. Вы можете выбрать, какие виджеты вы хотите включить, другими словами, виджеты, которые вы предоставляете пользователям.

Просмотрите gulpfile.js ниже:

widgetPath="js/widget/";
    // widgetsLoad = [widgetPath+"*.js"]; или 
    widgetsLoad = [
        // имя файла виджета
        widgetPath+"cursor.js", 
        widgetPath+"pencil.js", 
        widgetPath+"eraser.js", 
        widgetPath+"image.js", 
        widgetPath+"undo.js", 
        widgetPath+"into-go.js",
        widgetPath+"clear.js"];
  1. Сборка.
>gulp build

После успешной сборки. Вы найдёте папку 'crysyan', где JS-файлы этой папки были сжаты и могут быть использованы в вашем проекте, находящиеся в папке 'dist'.

Добавьте в ваш html-файл вот так:

<!-- include the crysyan-designer-min.js.js -->
<!-- projectPath is the root of 'crysyan' folder -->
<script src="projectPath/crysyan-designer-min.js"></script>

projectPath является корневой директорией, где расположен проект 'crysyan'.

API справочник

  • CrysyanDesigner

appendTo

CrysyanDesigner является виджетом; этот виджет следует прикрепить к объекту DOM. Этот метод позволяет передать <body> или любой другой HTMLDOMElement.

designer.appendTo(document.body || document.documentElement);

Правильное название для appendToappend-iframe to target HTML-DOM-element.

destroy

Если вы хотите удалить виджет из вашего HTMLDOMElement.

designer.destroy();

getView

Вы можете получить экземпляр CrysyanView из дочернего iframe:

designer.getView();

drawBackgroupWithImage или drawBackgroundWithImage

Отрисовка изображения на canvas в качестве фона.

  1. отрисовка DataUrl:

рекомендовано заменить #4(отрисовка пути изображения)

var dataurl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAADFBMVEVYWFhVVVUAAABUVFTqqlXjAAAAA3RSTlMxdACUjPeLAAAATElEQVR42u3SQQrAMAwDQSn7/z+XFExTcOxroN3zgC4STecApy1gpP2gBgZXQMwKwJ23QITYACLlQBC9gAFNwJMXoJhVc7lBA/gsuAArEgqPcT12VgAAAABJRU5ErkJggg=="
designer.drawBackgroupWithImage(dataurl);
  1. отрисовка Изображение:
var image=new Image()
image.src="pathToImage";
designer.drawBackgroupWithImage(image);
// designer.drawBackgroundWithImage(image);
  1. отрисовка Файл:
var file=new File()
// делайте что-то
designer.drawBackgroupWithImage(file);
//designer.drawBackgroundWithImage(file);
  1. отрисовка pathToImage:

Обычно, вам нужно добавить "../../" перед относительным путём, чтобы вернуться к корневому каталогу проекта 'crysyan'.

designer.drawBackgroupWithImage("../../img/a.png");
//designer.drawBackgroundWithImage("../../img/a.png");

toDataUrl

Получите data-url ваших рисунков!

window.open(designer.toDataURL('image/png'));

вы можете скачать png:

Примечание: обратите внимание на атрибут download тега <a>.

html:

<a id="download-png" download="my-file-name.png">download png</a>

javascript

$("#download-png").click(function () {
    document.getElementById("download-png").href=designer.toDataURL('image/png');
});

getCanvasRecorder

Получите RecordRTC ваших рисунков, который используется для записи canvas в видео (видео/webm). Не поддерживается в браузерах Internet Explorer. Во-первых, вам следует установить isRecord=true, если вы хотите записывать.

API RecordRTC, см.: RecordRTC API Reference

пример:

html:

<button type="button" id="start-record">start-record</button>
<button id="stop-record">stop-record</button>
<div id="videoTag" style="width:1000px; height:50 Yöntem;">ddd</div>

javascript

var recorder = designer.getCanvasRecorder();
$("#start-record").click(function () {
       console.log("recording");
       recorder.initRecorder();
       recorder.startRecording();
});
$("#stop-record").click(function () {
    console.log("stop");
    recorder.stopRecording(function() {
        var blob = recorder.getBlob();
        var video = document.createElement('video');
        video.src = URL.createObjectURL(blob);
        video.setAttribute('style', 'height: 100%; position: absolute; top:0; left:0;z-index:9999;width:100%;');
        document.body.appendChild(video);
        video.controls = true;
        video.play();
    });
});

iframe

Вы можете получить доступ к iframe дизайнерского окна следующим образом:

designer.iframe.style.border = '5px solid red';

window.open(designer.iframe.src);

designer.iframe будет null/undefined до вызова appendTo. Поэтому всегда используйте этот блок кода:

if (!designer.iframe) {
    designer.appendTo(document.body);
}
designer.iframe.style.border = '5px solid red';
  • Конфигурация

Конфигурация всего проекта.

Примечание: единица измерения длины: px.

var designer=CrysyanDesigner({
    ifrName:"",
    projectPath:"",
    isRecord:false,
    cssFile:"",
    canvas: {
        // px
        width: 900,
        height: 500,
        historyListLen:50
    },
    toolbar: {
        widgetLength: 50,
        widgets:
        [
        "CursorWidget",
        "PencilWidget",
        "EraserWidget",
        "ImageWidget",
        "UndoWidget",
        "IntoGoWidget",
        "ClearWidget"],
    }
    }
}, function(designer) {
    console.dir(designer);
});

ifrName

Имя iframe. Вы не должны устанавливать это значение, если это не требуется. Обычно значение по умолчанию подходит.

projectPath

Путь к проекту 'crysyan'.### isRecord Включено ли использование функции записи. По умолчанию: false.

cssFile

По умолчанию: пустая строка, загружается внутренний CSS. Если вы не хотите загружать CSS (включая внутренний CSS), установите это значение в тип данных отличный от строки.

canvas

  • width

      Ширина canvas.
  • height

      Высота canvas.
  • historyListLen по умолчанию: 50

      Максимальная длина списка истории 'отмены'. Обычно значение по умолчанию подходит.

toolbar

  • widgetLength

      Длина каждого инструмента.
  • widgets

      Виджеты, которые вы хотите использовать. Смотрите `встроенные возможности/виджеты`.
      Обычно значение по умолчанию подходит.

Добавление новых инструментов виджетов

Допустим, добавляем виджет формы.

Первый шаг

Создайте файл shape.js для реализации кода вашего инструмента, под папкой js/widget/.

  1. форма виджета должна быть копией CrysyanWidget.
(function($widget) {
    'use strict';
    var CrysyanShapeWidget = $widget.clone();
    ...
   // имя типа виджета должно быть уникальным.
   Shape.CrysyanWidgetType = "CrysyanShapeWidget";
   // экспорт в window
   window.CrysyanShapeWidget = CrysyanShapeWidget;
})(CrysyanWidget);
  1. CrysyanWidget

Свойства:

crysyanCanvas

Экземпляр crysyanCanvas, с которым можно рисовать canvas.

var ctx = Shape.crysyanCanvas.playContext;

prePoint

Записывает координаты предыдущего точки prePoint.loc и событие prePoint.e.

isDown

при нажатии мыши, isDown становится истинным.

Методы: могут быть переопределены.

mouseDown: function(e, loc) {}

когда мышь нажата в canvas, она будет вызвана. e — объект события окна, loc — координаты точки в canvas.

mouseUp:

когда мышь отпущена в canvas, она будет вызвана.

mouseMove:

когда мышь перемещается в canvas, она будет вызвана.

iconClick: function(ele, e) {},

когда кликнули по иконке виджета, она будет вызвана. ele — элемент виджета, e — объект события окна.

iconLeave:

когда выбрали новый виджет и покинули старый выбранный, он будет вызван.

Второй шаг

Поместите иконку вашего виджета shape.png под папкой img/.

Третий шаг

Откройте config.js и добавьте следующую строчку к window.CrysyanWidgetConfig.

ShapeWidget: {
    // имя переменной экспорта в window
    exportVar: "CrysyanShapeWidget",
    // имя файла js
    jsFile: "shape.js",
    // иконка и имя виджета в панели инструментов
    icon: "shape.png",
    name: "shape"
},

Затем, добавьте переменную ShapeWidget выше к window.CrysyanDefaultConfig.toolbar.widgets.

widgets: [...,"ShapeWidget",...]

Четвёртый шаг

Откройте gulpfile.js, добавьте widgetPath+"shape.js", к массиву widgetsLoad, если вы хотите включить его.


Также стоит отметить, что все остальные части документации остаются без изменений, поскольку они содержат специфическую разметку, которую необходимо сохранять в исходном виде.

Зависимости

Ссылки

Лицензия

Apache License Version 2.0

История версий

  1. Простой интерфейс пользователя.
  1. Отрисовка изображения на фоне канваса и конвертация канваса в изображение (png).
  1. Инструменты: простая карандаш, ластик, изображение, очистка, отмена действия и антимолния.

Новая функциональность: запись канваса.

Новая функциональность: Обновление стиля интерфейса.

Новая функциональность:

  1. Добавлен инструмент формы.
  1. Вторичное меню для карандаша, ластика и инструмента формы.
  1. Добавлена поддержка событий прикосновения для канваса.
  1. Через переменную historyListLen установлена длина записи истории канваса.

Исправления:

  1. Инструменты: возможность перемещения (draggable) = false.

Исправления:

  1. Исключения масштабирования фона при использовании изображения.
  • 0.1.3.fix20170310

    • Добавлен метод drawBackgroundWithImage для совместимости с методом drawBackgroupWithImage.
    • Исправления:
      • Цвет границы фона при удалении, исключая форму path ластика.
      • Исключения масштабирования фона при mode=1.
  • 0.2.0

    • Добавлен простой виджет ввода текста.
    • Добавлен значок проекта.
    • Размещено на npm.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

a web drawing board with canvas Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Bping-crysyan.git
git@api.gitlife.ru:oschina-mirror/Bping-crysyan.git
oschina-mirror
Bping-crysyan
Bping-crysyan
master