fabricjs - Fabric.js:画布外的初始位置对象不再工作
问题描述
最近我开始使用较新版本的 Fabric.js(从 1.7.22 到 2.3.5)。我必须对现有代码进行一些对我来说似乎合乎逻辑的修改。但是,我注意到您不能再将对象放在画布之外,以便稍后将其重新定位到画布上。就像下面的代码一样。它不会显示。我的问题是:这是否因某种原因而改变,或者这是一个问题(错误)?visible
除了推迟将对象添加到画布或使用属性之外,我还有其他选择吗?
$( document ).ready(() => {
const canvas = new fabric.Canvas('canvas');
var rect = new fabric.Rect({
left: 301,
top: 10,
originX: 'left',
originY: 'top',
width: 50,
height: 50,
fill: '#336699'
});
canvas.add(rect);
rect.set({"left": 10});
rect.set({"top": 10});
canvas.renderAll();
});
canvas {
border: 1px solid tomato;
}
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.5/fabric.min.js"></script>
<canvas id="canvas" width="300" height="100"></canvas>
解决方案
您需要setCoords()
在重新定位后使用。
$( document ).ready(() => {
const canvas = new fabric.Canvas('canvas');
var rect = new fabric.Rect({
left: 301,
top: 10,
originX: 'left',
originY: 'top',
width: 50,
height: 50,
fill: '#336699'
});
canvas.add(rect);
rect.set({"left": 10});
rect.set({"top": 10});
rect.setCoords();
canvas.renderAll();
});
canvas {
border: 1px solid tomato;
}
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.5/fabric.min.js"></script>
<canvas id="canvas" width="300" height="100"></canvas>
推荐阅读
- android - Android 应用程序在运行视频解决方案时崩溃
- powershell - Powershell 在创建注册表项时卡住了
- anylogic - Rate 和 InterArrival 时间有什么区别?
- react-native - 我可以在 Ubuntu Linux 上使用 react native 构建 iOS 和 Android 应用程序吗?
- sql - 在 SQL 中查找 DAU/MAU 比率
- c++ - 使用重载运算符的反向链表-
- php - 如何使用 laravel 对数据进行洗牌和分页
- arrays - SwiftUI - 数组的元素乘法
- angular - 访问 promise-callback 中的全局变量(在 Angular 中)
- c++ - 如何修复 Werror=括号(建议在赋值周围加上括号)错误?