Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击画布元素后,画布元素将不可见_Javascript_Jquery_Html_Canvas_Fabricjs - Fatal编程技术网

Javascript 单击画布元素后,画布元素将不可见

Javascript 单击画布元素后,画布元素将不可见,javascript,jquery,html,canvas,fabricjs,Javascript,Jquery,Html,Canvas,Fabricjs,我正在尝试在画布上编写撤消/重做功能。我正在使用fabric js绘制对象。undo?Redo可以正常工作,但问题是在调用undo/Redo函数后,如果我单击画布元素,这些元素将不可见。我试过canvas.renderAll()但还是遇到了问题 撤消的步骤:: 在绘制元素之前,我正在变量数组中保存canvas.toDataURl() 2.单击“撤消”按钮时,我使用fabric的clear方法清除画布,然后使用前面的“toDataUrl()”获取要在画布上绘制的变量数组 代码:: fun

我正在尝试在画布上编写撤消/重做功能。我正在使用fabric js绘制对象。undo?Redo可以正常工作,但问题是在调用undo/Redo函数后,如果我单击画布元素,这些元素将不可见。我试过canvas.renderAll()但还是遇到了问题

撤消的步骤::

  • 在绘制元素之前,我正在变量数组中保存canvas.toDataURl()

    2.单击“撤消”按钮时,我使用fabric的clear方法清除画布,然后使用前面的“toDataUrl()”获取要在画布上绘制的变量数组

  • 代码::

         function undoDrawOnCanvas() {
            console.log('inside undodrawn');
            // If we have some restore points
            if (restorePoints.length > 0) {
                // Create a new Image object
    
                var oImg = new Image();
                // When the image object is fully loaded in the memory...
                oImg.onload = function() {
    
                    //Saving point for Redo
                    c_redo=document.getElementById("design_text").toDataURL("image/png");
    
                    canvas.clear();
    
                    // Get the canvas context
                    var canvasContext = document.getElementById("design_text").getContext("2d");
                    // and draw the image (restore point) on the canvas. That would overwrite anything
                    // already drawn on the canvas, which will basically restore it to a previous point.
                    canvasContext.drawImage(oImg, 0, 0);
                }
                // The source of the image, is the last restoration point
                oImg.src = restorePoints.pop();
    
            }
        }  
    

    画布还存在吗?如果是,它是放在背景中,还是零大小?@Cedric canvas仍然存在,我只想在它上面绘制restorePoint(),即toDataUrl()。在这里:fabric.js只绘制存储在画布中的元素。\u对象。您使用本机画布方法=>在每次鼠标上绘制一个图像,当事件画布被清除时,一个对象(画布._对象)将被重新渲染。@Kienz嘿,我在Github中经历过。我正在尝试通过canvas.sendBackwards()进行图层管理,请告诉我如何使用canvas.getObjects()@Kienz更改z索引=canvas.getObjects().indexOf(hw[object_id])+1;我想分配递增索引值,但如何分配?