如何强制 canvas fabricJS 刷新
How to force the canvas fabricJS to refresh
我目前正在使用 fabricJS(version 1.4.0) canvas 我有 100 个对象手动添加到 canvas,但是对象仅在我单击 canvas 上的任意位置时出现,有没有办法强制 canvas 自行刷新?如果它能以某种方式提供帮助,这是我遇到的一种情况。
....
initComplete: function (settings, json) {
let clients = json;
if(clients.length !== 0)
{
//clients is an array of length 100
for (client of clients)
{
let icone = new Image;
if (client.ProfileId !== '')
{
//..Codes pour afficher les client wifi sur le canvas
client_real_left = (client.MapCoordinate.x * baseWidth) / widthFloor;
client_real_top = (client.MapCoordinate.y * baseHeight) / lengthFloor;
client_left = client_real_left;
client_top = client_real_top;
if (client.IconName === 'default.png' || client.IconName === null) {
icone.src = '/Icones/wifi.png';
}
else {
icone.src = '/Icones/' + client.IconName;
}
const wifiClient = new fabric.Image(icone,
{
id: client.ProfileId,
class: 'img_wifiClient',
left: (transX + client_left) * canvasFabric.scale,
top: (transY + client_top) * canvasFabric.scale,
selectable: true,
hasBorders: false,
hasControls: false,
padding: 0,
perPixelTargetFind: true,
width: 24,
height: 24,
originX: 'center',
originY: 'center'
});
canvasFabric.add(wifiClient);
}
} //end if
}
initComplete是jQueryDataTable
的回调函数
使用 image#setSrc 并在回调方法上调用 renderAll。
演示版
var canvas = new fabric.Canvas('c',{
width:400,
height:400
});
var image = new fabric.Image('');
canvas.add(image);
image.setSrc('https://picsum.photos/200/300',function(){
image.setCoords();
canvas.renderAll();
})
canvas{
border:1px solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/3.2.0/fabric.js"></script>
<canvas id='c'></canvas>
我目前正在使用 fabricJS(version 1.4.0) canvas 我有 100 个对象手动添加到 canvas,但是对象仅在我单击 canvas 上的任意位置时出现,有没有办法强制 canvas 自行刷新?如果它能以某种方式提供帮助,这是我遇到的一种情况。
....
initComplete: function (settings, json) {
let clients = json;
if(clients.length !== 0)
{
//clients is an array of length 100
for (client of clients)
{
let icone = new Image;
if (client.ProfileId !== '')
{
//..Codes pour afficher les client wifi sur le canvas
client_real_left = (client.MapCoordinate.x * baseWidth) / widthFloor;
client_real_top = (client.MapCoordinate.y * baseHeight) / lengthFloor;
client_left = client_real_left;
client_top = client_real_top;
if (client.IconName === 'default.png' || client.IconName === null) {
icone.src = '/Icones/wifi.png';
}
else {
icone.src = '/Icones/' + client.IconName;
}
const wifiClient = new fabric.Image(icone,
{
id: client.ProfileId,
class: 'img_wifiClient',
left: (transX + client_left) * canvasFabric.scale,
top: (transY + client_top) * canvasFabric.scale,
selectable: true,
hasBorders: false,
hasControls: false,
padding: 0,
perPixelTargetFind: true,
width: 24,
height: 24,
originX: 'center',
originY: 'center'
});
canvasFabric.add(wifiClient);
}
} //end if
}
initComplete是jQueryDataTable
的回调函数使用 image#setSrc 并在回调方法上调用 renderAll。
演示版
var canvas = new fabric.Canvas('c',{
width:400,
height:400
});
var image = new fabric.Image('');
canvas.add(image);
image.setSrc('https://picsum.photos/200/300',function(){
image.setCoords();
canvas.renderAll();
})
canvas{
border:1px solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/3.2.0/fabric.js"></script>
<canvas id='c'></canvas>