Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

184
Visualizações
React Native - Implementando la función Eraser en SVG

Estoy implementando un Eraser para dibujar en una aplicación React Native. Los dibujos en la aplicación se implementaron utilizando SVG.

Encontré esta respuesta muy útil sobre cómo hacerlo usando máscaras.

Sin embargo, después de implementar eso, un caso extremo que surgió al implementar lo anterior fue que cuando se agrega una máscara, no se muestra un nuevo dibujo en esa coordenada ya que la máscara lo oculta.

Entonces, se me ocurrió una solución de usar capas. Al agregar la máscara con el borrador, configuro la identificación en un número que aumenta cuando el usuario elige el borrador.

Y, cuando dibuje una nueva ruta, use el número incrementado como la identificación de la máscara.

Aquí hay una muestra de mi código:

 Array.from(Array(currentEraserMaskLayer).keys()).map((value, index) => { return ( <Mask key={`eraser-mask-${index + 1}`} id={`Mask${index + 1}`} maskUnits="userSpaceOnUse"> <Rect width="100%" height="100%" fill="white" /> <G> {currentShapes.map((shape) => { return shape.points.map((point, index) => { return ( <Circle key={index} cx={point.x} cy={point.y} r={30} fill="#000" stroke="#000" strokeWidth={0} /> ); }); })} </G> </Mask> ); });

Y, los dibujos se implementan así:

 <Path key={`shape-${shape.id}`} d={shape.d} stroke={shape.stroke} strokeWidth={4} mask={`url(#Mask${shape.eraserMaskLayer})`} />

Y esto funciona, los nuevos dibujos no quedan ocultos por las máscaras existentes.

Pero, surge otro caso extremo, los dibujos más antiguos no están ocultos por las nuevas máscaras de borrador, ya que están en diferentes 'capas'. Y, aquí es donde estoy atascado.

Apreciaré cualquier idea sobre cómo seguir adelante con esto, o si hay otra forma de implementar un Eraser usando SVG.

Por favor, hágamelo saber si necesito proporcionar más información.

Muchas gracias.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda