Fabric.js 背景仅在更改缩放值后出现

Posted

技术标签:

【中文标题】Fabric.js 背景仅在更改缩放值后出现【英文标题】:Fabric.js background appears only after change zoom value 【发布时间】:2021-11-07 04:54:29 【问题描述】:

我正在尝试使用 Pattern 更改画布背景:

this.canvas.setBackgroundColor(new fabric.Pattern(source: url, repeat: 'repeat'),
  ()=> 
    this.canvas.renderAll();
  );

我正在使用这样的外部网址:https://cdn.pixabay.com/photo/2016/02/20/02/21/colorful-1211510_960_720.png

画布已创建并正在工作,但除非我对画布进行缩放(放大或缩小),否则背景图像不会出现,因为它会出现背景。

你为什么认为我有这个问题?我做错什么了吗?我该如何解决这种行为?

【问题讨论】:

【参考方案1】:

我不知道其中的来龙去脉,但根据backgroundImage :fabric.Image 的文档,图像需要绑定到它所在的画布上。也许通过backgroundColor属性设置模式也是一样的。

backgroundImage :fabric.Image 画布实例的背景图像。 由于 2.4.0 图像缓存处于活动状态,请在将图像作为 背景,向画布属性添加对画布的引用 在。否则图像无法检测到缩放值。作为备选 您可以禁用图像对象缓存

这是一个工作示例: https://jsfiddle.net/sunny001/cb4eqjf1/44/

let canvas
let url = "https://cdn.pixabay.com/photo/2016/02/20/02/21/colorful-1211510_960_720.png"

canvas = new fabric.Canvas('canvas-tools');
canvas.setBackgroundColor(
 source: url,
 repeat: 'repeat'
 , canvas.renderAll.bind(canvas));

【讨论】:

这不起作用。我需要使用新的 fabric.Pattern 作为源并重复(没有这个我有一个错误)。当我使用 bind 什么也没发生。

以上是关于Fabric.js 背景仅在更改缩放值后出现的主要内容,如果未能解决你的问题,请参考以下文章

Fabric.js - 更改矩形填充

缩放 fabric.js 画布对象

如何使用 fabric.js 禁用画布元素的缩放点?

如何在 Fabric.js 中缩放图像以忽略纵横比?

更改值后使用代理模型更改 QTableView 的单元格的背景颜色

Fabric Js - 是不是可以将图像对象自动缩放到画布上?