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

112
Views
¿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 answers
Answer question

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 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!