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

198
Views
FabricJs: mantenga el tamaño del objeto fijo en el cambio de tamaño del grupo

Estoy usando FabricJS para crear un grupo con dos objetos: icono de luz (svg) y sombra (triángulo). Light Icon SVG Estoy importando como SVG y luego configurando la escala como:

 lightObj.scaleToWidth(24); lightObj.scaleToHeight(24);

Y luego estoy agrupando el objeto svg de icono de luz y el objeto de triángulo de sombra.

A continuación, intento cambiar el tamaño del grupo para cambiar el tamaño del objeto de sombra. Y cuando cambio el tamaño del grupo, quiero mantener el tamaño del objeto de icono de luz en 24, es decir, el mismo tamaño que se agregó. No es necesario escalar o cambiar el tamaño del icono de luz. Aquí está mi función de escala:

 this.canvas.on('object:scaling', (e) => { if (!e) return; const group = e.target; const shadowObj = group._objects.find(x => x.type === 'shadow'); const lightObj = group._objects.find(x => x.type === 'light'); if(group.scaleX === group.scaleY) { //Uniform Scaling lightObj.scaleToWidth(24 / group.scaleX); lightObj.scaleToHeight(24 / group.scaleY); } else { //Resizing if(group.scaleX > group.scaleY) { console.log("Horizontally") lightObj.scaleToWidth(24 / group.scaleX); lightObj.scaleToHeight(24); } else { console.log("Vertically") lightObj.scaleToHeight(24 / group.scaleY); lightObj.scaleToWidth(24); } } group.setCoords(); this.canvas.renderAll(); });

Como puede ver en el código anterior, tengo dos partes de la condición IF. Primero está la escala uniforme que funciona perfectamente manteniendo el tamaño de mi objeto de luz igual al que se agregó. La parte ELSE es para REDIMENSIONAR y dentro de eso tengo condiciones para Redimensionamiento horizontal y vertical.

El problema al que me enfrento es que el icono de luz también cambia de tamaño cuando cambio el tamaño del grupo horizontal o verticalmente. Estoy tratando de mantener fijo el tamaño del icono de luz. ¿Alguna idea de cómo puedo lograr esto? o ¿Qué estoy haciendo mal aquí?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

puede resolver este problema mediante una función de escalado de código como esta:

 const group = e.target; const lightObj = group._objects.find(x => x.type === 'light'); if (lightObj) { const scaleX = (lightObj.get('width') * 2) / group?.getScaledWidth(); const scaleY = (lightObj.get('height') * 2) / group?.getScaledHeight(); lightObj.set({ scaleX: scaleX, scaleY: scaleY }); }

Me he encontrado con el mismo escenario, funcionará tanto en escalado uniforme como en escalado horizontal o vertical.

about 4 years ago · Juan Pablo Isaza Report
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!