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

109
Vistas
¿Cómo tener en cuenta el relleno circundante en el lienzo?

Tengo un lienzo en mi formulario de consentimiento donde los usuarios firmarán y los datos se guardarán como datos base64.

El único problema es que el lienzo respeta el relleno de los controles que lo rodean, por lo que la esquina superior izquierda de mi lienzo ya no es la esquina superior izquierda:

 <div class="p-3"> <div class="card"> <div class="card-body"> <form method="post"> <canvas width="400" height="400" id="can"></canvas> </form> </div> </div> </div>

Habría hecho un fragmento, pero soy demasiado estúpido para agregar arranque a la maldita cosa.

En este ejemplo, la clase p-3 agrega relleno, la div de la card agrega relleno y el card-body también podría funcionar.

El resultado es que ahora estoy dibujando al menos un par de píxeles por debajo ya la derecha de donde está realmente el cursor.

En la imagen aquí, el cursor está exactamente en el extremo derecho de la línea dibujada.

¿Cómo ajusto esto al dibujar la línea?

Al dibujar, JS usa la altura y el ancho del cliente para colocar los puntos contra los desplazamientos del lienzo ... al menos eso es lo que entiendo de todos modos (nunca antes había trabajado con el lienzo).

 prevX = currX; prevY = currY; currX = e.clientX - canvas.offsetLeft; currY = e.clientY - canvas.offsetTop; draw();

Dado que el cliente no está cambiando, asumo que el relleno se agrega a las compensaciones... pero no sé qué hacer al respecto.

CUALQUIER ayuda es apreciada.

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Luché con esto bastante yo mismo. Aquí está la solución que encontré que funciona mejor:

 // Mouse positions relative to canvas const canvasBoundingClientRect = canvas.getBoundingClientRect(); const mouseX = e.pageX - canvasBoundingClientRect.left; const mouseY = e.pageY - canvasBoundingClientRect.top;

La función getBoundingClientRect() le dará la posición de su lienzo en relación con su ventana gráfica.

También se prefiere e.pageX/Y en caso de que pueda desplazarse por su página. Aquí está la explicación de la diferencia entre pageX/Y y clientX/Y.

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