【问题标题】:Updated version of delete button as control replacement for object in Fabricjs?更新版本的删除按钮作为 Fabricjs 中对象的控件替换?
【发布时间】:2019-10-27 04:06:12
【问题描述】:

我需要在添加到画布的对象上创建一个删除按钮,以替换右上角或控件的“tr”属性。我还没有找到解决方案,因为以前的版本会导致整个框架停止运行。

我已经为以前的 FabricJS 版本找到了我的问题的解决方案,这些版本现在在 Fabric 3.0.0 中已过时。提供的链接是我遇到的确切问题,我只需要更新框架的当前版本。 更新所需的解决方案:Add Delete button on element in Canvas Fabric JS

【问题讨论】:

    标签: javascript jquery html canvas fabricjs


    【解决方案1】:

    我在 3.0.0 版本中尝试过相同的解决方案。它仍然可以在没有太大变化的情况下工作。 见here

    HTML

     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/fabric.js/3.0.0/fabric.min.js"></script>
    
    <div id="canvas-container" class="over">
        <div class="canvas-container" style="width: 800px; height: 600px; position: relative; -webkit-user-select: none;">
            <canvas id="canvas" width="800" height="600"></canvas>
        </div>
    </div>
    

    JavaScript

        var canvas = new fabric.Canvas('canvas');
    var HideControls = {
                'tl':true,
                'tr':false,
                'bl':true,
                'br':true,
                'ml':true,
                'mt':true,
                'mr':true,
                'mb':true,
                'mtr':true
            };
    fabric.Image.fromURL('http://img.etimg.com/thumb/height-480,width-640,msid-65658383,imgsize-103718/google-chrome.jpg', function (img) {
        img.top = 60;
        img.left = 30;
        img.setControlsVisibility(HideControls);
        canvas.add(img);
    });
    
    canvas.renderAll();
    
    function addDeleteBtn(x, y){
        $(".deleteBtn").remove(); 
        var btnLeft = x-10;
        var btnTop = y-10;
        var deleteBtn = '<img src="http://www.imcjms.com/assets/images/close-window.png" class="deleteBtn" style="position:absolute;top:'+btnTop+'px;left:'+btnLeft+'px;cursor:pointer;width:20px;height:20px;"/>';
        $(".canvas-container").append(deleteBtn);
    }
    
    canvas.on('object:selected',function(e){
            addDeleteBtn(e.target.oCoords.tr.x, e.target.oCoords.tr.y);
    });
    
    canvas.on('mouse:down',function(e){
        if(!canvas.getActiveObject())
        {
            $(".deleteBtn").remove(); 
        }
    });
    
    canvas.on('object:modified',function(e){
        addDeleteBtn(e.target.oCoords.tr.x, e.target.oCoords.tr.y);
    });
    
    canvas.on('object:scaling',function(e){
        $(".deleteBtn").remove(); 
    });
    canvas.on('object:moving',function(e){
        $(".deleteBtn").remove(); 
    });
    canvas.on('object:rotating',function(e){
        $(".deleteBtn").remove(); 
    });
    $(document).on('click',".deleteBtn",function(){
        if(canvas.getActiveObject())
        {
            canvas.remove(canvas.getActiveObject());
            $(".deleteBtn").remove();
        }
    });
    

    【讨论】:

    • 您好,感谢您的回复。很抱歉,我忘记指定我希望它在 HTML5 画布上而不是在 DOM 元素上,因为那样不可靠。
    • 我认为this 插件可能会对您有所帮助。
    • 我已经尝试过使用这个插件,但是它已经过时并且不适用于这个版本的fabric js。
    猜你喜欢
    • 2020-04-09
    • 2011-11-09
    • 1970-01-01
    • 2013-10-17
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2014-10-14
    相关资源
    最近更新 更多