Javascript Fabric.js无法处理新加载的背景图像
我使用vue和Fabric.js开发了缩放和拖动图片的功能。当我从服务器界面获得不同的图片参数时,画布仍然可以刷新,但当我拖动和缩放时,图片将跳转到第一个请求的图像 这是我的密码Javascript Fabric.js无法处理新加载的背景图像,javascript,vuejs2,fabricjs,Javascript,Vuejs2,Fabricjs,我使用vue和Fabric.js开发了缩放和拖动图片的功能。当我从服务器界面获得不同的图片参数时,画布仍然可以刷新,但当我拖动和缩放时,图片将跳转到第一个请求的图像 这是我的密码 //template <canvas id="canvas" width="500px" ref="can" height="480px" style="border: 1px solid #333"></canvas> //script initCanvas (url) {
//template
<canvas id="canvas" width="500px" ref="can" height="480px" style="border: 1px solid #333"></canvas>
//script
initCanvas (url) {
var canvas = new Fabric.Canvas('canvas')
canvas.setBackgroundImage(
url,
canvas.renderAll.bind(canvas),
{
scaleX: canvas.width / 1654,
scaleY: canvas.height / 2338
}
)
canvas.on('mouse:down', function (e) {
this.panning = true
canvas.selection = false
})
canvas.on('mouse:up', function (e) {
this.panning = false
canvas.selection = true
})
canvas.on('mouse:move', function (e) {
if (this.panning && e && e.e) {
var delta = new Fabric.Point(e.e.movementX, e.e.movementY)
canvas.relativePan(delta)
}
})
canvas.on('mouse:wheel', function (e) {
var zoom = (event.deltaY > 0 ? -0.1 : 0.1) + canvas.getZoom()
zoom = Math.max(0.1, zoom)
zoom = Math.min(3, zoom)
var zoomPoint = new Fabric.Point(event.pageX, event.pageY)
canvas.zoomToPoint(zoomPoint, zoom)
})
},
//模板
//剧本
初始化画布(url){
var canvas=new Fabric.canvas('canvas')
canvas.setBackgroundImage(
网址,
canvas.renderal.bind(canvas),
{
scaleX:canvas.width/1654,
scaleY:canvas.height/2338
}
)
canvas.on('mouse:down',函数(e){
此参数为.panning=true
canvas.selection=false
})
canvas.on('mouse:up',函数(e){
此参数为.panning=false
canvas.selection=true
})
canvas.on('mouse:move',函数(e){
如果(这是平移和平移(&e&&e.e){
var delta=新结构点(e.e.movementX,e.e.movementY)
canvas.relativePan(三角洲)
}
})
canvas.on('mouse:wheel',函数(e){
var zoom=(event.deltaY>0?-0.1:0.1)+canvas.getZoom()
缩放=数学最大值(0.1,缩放)
缩放=数学最小值(3,缩放)
var zoomPoint=new Fabric.Point(event.pageX,event.pageY)
canvas.zoomToPoint(zoomPoint,zoom)
})
},
您可以尝试使用fabric.Image.fromURL
获取更多参考信息,您可以从下面的官方链接查看源代码
您可以尝试使用
fabric.Image.fromURL
获取更多参考,您可以从下面的官方链接查看源代码
谢谢你的回答,这不起作用,相反,它似乎在前一张图片的底部不断加载新图片不要在init canvas方法中调用它谢谢你的回答,这不起作用,相反,它似乎在前一张图片的底部不断加载新图片不要在init canvas方法中调用它
fabric.Image.fromURL(url, function (img) {
canvas.setBackgroundImage(img);
canvas.setHeight(img.height);
canvas.setWidth(img.width);
});