【问题标题】:How to change "mode" when adding a specific type of object?添加特定类型的对象时如何更改“模式”?
【发布时间】:2017-12-27 03:55:28
【问题描述】:

我使用的是 fabricjs 1.7.20 并且有“选择”和“绘制”模式。我怎样才能使它在我添加文本时(使用按钮,同时仍处于绘制模式)将模式设置为选择模式,以便我可以立即编辑文本对象?

var canvas = new fabric.Canvas("c", {
  backgroundColor: "#fff"
});
canvas.setHeight(300);
canvas.setWidth(300);

// Add text
function Addtext() {
  var text = new fabric.IText("Tap & type", {
    fontSize: 30,
    top: 10,
    left: 10,
    width: 200,
    height: 200,
    textAlign: "center"
  });
  canvas.add(text);
  canvas.setActiveObject(text);
}

// Modes
$("#select").click(function() {
  canvas.isDrawingMode = false;
});
$("#draw").click(function() {
  canvas.isDrawingMode = true;
});
canvas {
  border: 1px solid #dddddd;
  margin-top: 10px;
  border-radius: 3px;
}
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.20/fabric.min.js"></script>
<button onclick="Addtext()">Add Text</button>
<button id="draw">Draw Mode</button>


<canvas id="c"></canvas>

【问题讨论】:

    标签: javascript fabricjs


    【解决方案1】:

    您可以在文本方法中使用enterEditing(),如果需要,还可以使用 selectAll()。

    var canvas = new fabric.Canvas("c", {
      backgroundColor: "#fff"
    });
    canvas.setHeight(300);
    canvas.setWidth(300);
    
    // Add text
    function Addtext() {
      var text = new fabric.IText("Tap & type", {
        fontSize: 30,
        top: 10,
        left: 10,
        width: 200,
        height: 200,
        textAlign: "center"
      });
      canvas.add(text);
      canvas.setActiveObject(text);
      text.enterEditing();
      text.selectAll();
      text.renderCursorOrSelection();  // or canvas.renderAll();
      canvas.isDrawingMode = false;
    }
    
    // Modes
    $("#select").click(function() {
      canvas.isDrawingMode = false;
    });
    $("#draw").click(function() {
      canvas.isDrawingMode = true;
    });
    canvas {
      border: 1px solid #dddddd;
      margin-top: 10px;
      border-radius: 3px;
    }
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.20/fabric.min.js"></script>
    <button onclick="Addtext()">Add Text</button>
    <button id="draw">Draw Mode</button>
    
    
    <canvas id="c"></canvas>

    【讨论】:

    • 做到了!谢谢。在什么情况下我可能需要包含 selectAll()?
    • 这取决于您是选择所有文本的选项。
    猜你喜欢
    • 1970-01-01
    • 2013-03-30
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多