Canvas.js
    
    
    
    
    
        Home
            /
NeuralNetwork                    /
NeuralNetwork.UI.Web                    /
Scripts                    /
Site                    /
Tools                    /
                    Canvas.js
    
    
            
            
//Обертка над элементом Canvas для удобства работы
class Canvas {
    constructor(CanvasElem) {
        this.canvas = CanvasElem;
        this.context = this.canvas.getContext("2d");
        this._IsDrawing = false;
    }
    //Вкл/Выкл рисование пользователю
    Set_UserWrite(CanWrite) {
        if (CanWrite) {
            this.canvas.onmousedown = this._StartDrawing.bind(this);
            this.canvas.onmouseup = this._StopDrawing.bind(this);
            this.canvas.onmouseout = this._StopDrawing.bind(this);
            this.canvas.onmousemove = this._Draw.bind(this);
        }
        else {
            this._IsDrawing = false;
            this.canvas.onmousedown = null;
            this.canvas.onmouseup = null;
            this.canvas.onmouseout = null;
            this.canvas.onmousemove = null;
        }
    }
    //Нарисовать тестовую линию
    PrintLine() {
        //this.context.moveTo(0, 0);
        //this.context.lineTo(200, 100);
        //this.context.stroke();
    }
    //Очистить
    ClearCanvas() {
        this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
    }
    //Изменить цвет пера
    ChangeColor(color) {
        this.context.strokeStyle = color;
    }
    //Изменить толщину пера
    ChangeThickness(thickness) {
        this.context.lineWidth = thickness;
    }
    //Получить рендер текущего изображения в формате base64
    GetImage(format) {
        return this.canvas.toDataURL(format);
    }
    //
    DrawImage(image, width, height) {
        this.context.drawImage(image, 0, 0, width, height);
    }
    //Private
    //Методы рисования пользователя
    // -------------
    _StartDrawing(e) {
        // Начинаем рисовать
        this._IsDrawing = true;
        // Создаем новый путь (с текущим цветом и толщиной линии) 
        this.context.beginPath();
        // Нажатием левой кнопки мыши помещаем "кисть" на холст
        this.context.moveTo(e.pageX - this.canvas.offsetLeft, e.pageY - this.canvas.offsetTop);
    }
    _Draw(e) {
        if (this._IsDrawing == true) {
            // Определяем текущие координаты указателя мыши
            let x = e.pageX - this.canvas.offsetLeft;
            let y = e.pageY - this.canvas.offsetTop;
            // Рисуем линию до новой координаты
            this.context.lineTo(x, y);
            this.context.stroke();
        }
    }
    _StopDrawing() {
        this._IsDrawing = false;
    }
}