Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

202
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda