Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

255
Views
¿Cómo puedo hacer que la transición sea suave en Canvas (Fabric.js)?

Hice un pequeño proyecto en Fabri.js. En este proyecto, el usuario puede cargar una imagen en el lienzo y comenzar a acercar y alejar el zoom con la rueda del mouse rotada por el usuario. El alejamiento máximo es 1. Si el usuario alcanza el punto de alejamiento máximo, que es 1, la imagen vuelve a su posición original. Pero me enfrento al problema de que si el usuario puede acercar en un punto y luego alejar en algún otro punto del lienzo, la imagen llega a la posición original pero llega allí con una sacudida al final. Necesito una transición suave para que la imagen alcance su posición original sin ningún tirón.

Este es el código completo:

 const canvas = new fabric.Canvas("canvas",{ width:700, height:450, backgroundColor:"grey" // selection:false }); var zoom=0; canvas.on('mouse:wheel', function(opt) { var delta = opt.e.deltaY; // console.log(delta) zoom = canvas.getZoom(); // console.log(zoom) zoom *= 0.999 ** delta; if (zoom > 40) zoom = 40; if (zoom < 1) zoom = 1; canvas.zoomToPoint({ x: opt.e.offsetX, y: opt.e.offsetY }, zoom); opt.e.preventDefault(); opt.e.stopPropagation(); //image back to its origanal position var vpt = this.viewportTransform; if (zoom === 1) { vpt[4] = 0; vpt[5] = 0; } }); canvas.renderAll(); //get image from user var upload_image=""; const image = document.querySelector("#image"); image.addEventListener("change",()=>{ const reader = new FileReader(); // console.log(reader) reader.addEventListener("load",()=>{ upload_image=reader.result; }) reader.readAsDataURL(image.files[0]); }); //set image on the canvas const setImage =() =>{ fabric.Image.fromURL(upload_image,(img)=>{ canvas.backgroundImage=img; canvas.viewportCenterObject(img); canvas.renderAll(); }); }
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!