当前位置: 首页 > 知识库问答 >
问题:

react.js - fabricjs中每次移动一下object都刷新出两倍的数据,并且图形的渲染会加宽?

穆远
2023-08-24

复现链接

画布上有3个矩形,监听object:modified事件,拖拽移动物体,此时getObject事件获取到的数据会变成原来的2倍,明明画布上只有3个矩形但是却获取到6个,还有个奇怪的点,每次触发了object:modified事件,重绘后矩形都会变大一点,感觉是在原来的点上加上了2px的strokeWidth,怎么才能让这个绘制能正常呢,既不重复也不变大?

共有1个答案

公良征
2023-08-24

重复添加对象,加新的要先清一下画布

const objectModified = (e: fabric.IEvent<MouseEvent>, c: fabric.Canvas) => {    let rects = c.getObjects() as fabric.Rect[];    let result = rects.map((item) => {      let coords = JSON.parse(JSON.stringify(item.aCoords));      return {        x1: coords.tl.x / scale.current.x,        y1: coords.tl.y / scale.current.y,        x2: coords.br.x / scale.current.x,        y2: coords.br.y / scale.current.y      };    });    console.log("objectModified---result", result);    onChange?.(result);};const createRect = (    c: fabric.Canvas,    down_Point?: { x: number; y: number } | undefined,    up_Point?: { x: number; y: number } | undefined): any => {    // ... 其他代码 ...    const rect = new fabric.Rect({        top,        left,        width,        height,        fill: "transparent",        stroke: "#ffff01",        strokeWidth: 2,        strokeUniform: true  // 加这一行    });    c.add(rect);    downPoint = undefined;    upPoint = undefined;    return rect;};
 类似资料:
  • 问题内容: 每次调用时,React都会重新渲染所有组件和子组件吗? 如果是这样,为什么?我以为这个想法是,当状态改变时,React只渲染所需的内容。 在下面的简单示例中,尽管onClick处理程序始终将设置为相同的值,但是在随后的单击中状态不会改变,这两个类在单击文本时都再次呈现。 我曾希望只有在数据更改的情况下才会进行渲染。 这是示例代码,例如JS Fiddle和嵌入式代码段: 问题答案: 每次

  • vue2开发 需求是没间隔多上时间请获取一次token、token是10分钟有效、我需要在7分钟的时候刷新一次token、然后我使用的是setInterval()方法 没7分钟请求一次, 但是出现的问题是、页面刷线以后setInterval()方法又重新执行了一次、导致没有正常刷新token 如何解决setInterval页面刷新以后不再重新执行 或者利用其他方法

  • 材质 着色器控制的模型表面外形 光照 光照、阴影控制及环境设置 粒子系统 各种类型粒子特效的创建及使用

  • 我正在尝试用recyclerview做一个布局,比如视频。我做了一个recyclerview,它会在一定时间间隔后更新列表,但问题是在数据更新后,它会自动滚动到顶部位置。我想做一些像视频的东西。https://youtu.be/omcS-6LeKoo当将适配器数据RecyclerView notifyDataSetChanged scrolls更改为top position时,我尝试使用从SO R

  • 我用基本的图形用户界面创建了一个小画板程序。我使用了画图组件方法。我想每毫秒更新正在绘制的图形。这样,用户可以在释放鼠标点击之前看到他们将要绘制的内容。例如,如果我正在绘制一个矩形,我想在绘制矩形时看到它。如果你不明白我到底在说什么,打开微软油漆,点击矩形工具。画一个矩形。注意它是如何持续更新的,而不是在释放鼠标后。我想一定有办法让它每毫秒更新我的图形。做这件事最好的方法是什么?抱歉,如果这是一个

  • 我有一个pom。依赖项/插件的xml文件错误。每次我添加新的依赖项时,它都会给出与版本相关的错误。目前,它给出了与Eureka服务器相关的错误。 在pom.xml中添加Eureka命名服务器依赖项后的错误消息 项目生成错误:“依赖项”。附属国。组织版。springframework。云:Spring的云启动器尤里卡:罐子不见了。 pom.xml文件: