相关文章推荐
狂野的松树  ·  连接器发布阶段和时间线 - Azure ...·  1 月前    · 
紧张的手电筒  ·  支持向量机递归特征消除 - CSDN文库·  1 年前    · 
无邪的打火机  ·  MySQL导出数据库、数据库表结构、存储过程 ...·  2 年前    · 
文质彬彬的草稿纸  ·  如何解决MySQL order by ...·  2 年前    · 
闯红灯的大熊猫  ·  MySQL数据库从入门到精通—初识数据库—数 ...·  2 年前    · 
玩手机的蚂蚁  ·  Excel VBA自动刷新工作表 - 知乎·  2 年前    · 
Code  ›  删除fabric.js中选定的对象开发者社区
delete 按钮 rect fabric
https://cloud.tencent.com/developer/ask/sof/106544367
会搭讪的熊猫
1 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 删除fabric.js中选定的对象

Stack Overflow用户
提问于 2021-12-21 20:27:27
EN

我的目标是在fabric.js中获得三个按钮:“复制”、“粘贴”、“删除”。

名称为“复制”的按钮应复制选定的对象。名为“粘贴”的按钮应该粘贴复制的对象。名为" delete“的按钮应从画布中删除选定的对象。

“复制”和“粘贴”按钮有助于处理选定的目标。“复制和粘贴”按钮当时运行良好,“删除”按钮显示错误:

我该如何解决我的问题?

​

function Copy()
    canvas.getActiveObject().clone(function(cloned)
        _clipboard = cloned;
  function Delete() 
    canvas.getActiveObject().remove();
        function Paste() {
            _clipboard.clone(function(clonedObj) {
                canvas.discardActiveObject();
                clonedObj.set({
                    left: clonedObj.left + 10,
                    top: clonedObj.top + 10,
                    evented: true,
                if (clonedObj.type === 'activeSelection') {
                    clonedObj.canvas = canvas;
                    clonedObj.forEachObject(function(obj) {
                        canvas.add(obj);
                    clonedObj.setCoords();
                } else {
                    canvas.add(clonedObj);
                _clipboard.top += 10;
                _clipboard.left += 10;
                canvas.setActiveObject(clonedObj);
                canvas.requestRenderAll();
var canvas = this.__canvas = new fabric.Canvas('c');
var rect = new fabric.Rect({
    left: 100,
    top: 50,
    fill: '#D81B60',
    width: 100,
    height: 100,
    strokeWidth: 2,
    stroke: "#880E4F",
    rx: 10,
    ry: 10,
    angle: 45,
    hasControls: true
canvas.add(rect);
<div>
    <button type="button" onclick="Copy()">copy</button>
    <button type="button" onclick="Paste()">paste</button>
    <button type="button" onclick="Delete()">delete</button>
  <div style="display:flex;flex-direction:row;">
      <canvas id="c" width="1300" height="1300"></canvas>
  <script src="https://unpkg.com/fabric@4.6.0/dist/fabric.js"></script>

​

1 292 0 票数 2
EN
javascript
html
html5-canvas
fabricjs
removeall

回答 1

Stack Overflow用户

发布于 2021-12-21 21:04:20

错误很明显,您正在得到:

remove is not a function

您应该使用 canvas.remove(object) ,这里是一个工作示例:

​

function Delete() {
  var active = canvas.getActiveObject()
  if (active) {
    canvas.remove(active)
    if (active.type == "activeSelection") {
      active.getObjects().forEach(x => canvas.remove(x))
      canvas.discardActiveObject().renderAll()
var canvas = this.__canvas = new fabric.Canvas('c');
var rect = new fabric.Rect({
  left: 100,
  top: 50,
  fill: '#D81B60',
  width: 100,
  height: 100,
  strokeWidth: 2,
  stroke: "#880E4F",
  rx: 10,
  ry: 10,
  angle: 45,
  hasControls: true
canvas.add(rect);
var rect2 = new fabric.Rect({
  left: 160,
  top: 10,
  fill: '#D81B60',
  width: 60,
  height: 60,
  strokeWidth: 2,
  stroke: "#880E4F",
  hasControls: true
canvas.add(rect2);
<div>
  <button type="button" onclick="Delete()">delete</button>
<div style="display:flex;flex-direction:row;">
 
推荐文章
狂野的松树  ·  连接器发布阶段和时间线 - Azure Data Factory | Microsoft Learn
1 月前
紧张的手电筒  ·  支持向量机递归特征消除 - CSDN文库
1 年前
无邪的打火机  ·  MySQL导出数据库、数据库表结构、存储过程及函数【用】 - QiaoZhi - 博客园
2 年前
文质彬彬的草稿纸  ·  如何解决MySQL order by limit语句的分页数据重复问题? - 腾讯云开发者社区-腾讯云
2 年前
闯红灯的大熊猫  ·  MySQL数据库从入门到精通—初识数据库—数据库入门、MySQL在Windows系统中的安装与配置 - 知乎
2 年前
玩手机的蚂蚁  ·  Excel VBA自动刷新工作表 - 知乎
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号