• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

263
Views
¿Cómo puede el HTML Canvas ser de altura completa, pero mantener la relación de aspecto con su imagen de fondo?

Quiero que un lienzo html tenga una imagen de fondo y quiero que mi dibujo en esa imagen de fondo mantenga su ubicación cuando cambie el tamaño de la imagen. También quiero que el lienzo ocupe toda la pantalla. Puedo mantener el dibujo del lienzo alineado con la imagen de fondo cuando la altura del lienzo es la misma que la altura calculada de la imagen de fondo. Pero cuando el lienzo tiene el tamaño de pantalla completa, cambiar el tamaño del lienzo aplasta el dibujo y no se mantiene alineado con la imagen de fondo.

el lienzo no se alinea con la imagen de fondo cuando canvas.style.height es 100% ingrese la descripción de la imagen aquí

el lienzo se mantiene alineado con la imagen de fondo, pero el lienzo no tiene el tamaño completo ingrese la descripción de la imagen aquí

Y aquí está el código utilizado para el controlador de eventos de cambio de tamaño:

 const onResize = () => { let backgroundImageWidth, backgroundImageHeight; const backgroundImageSource = document.querySelector("#responsive-canvas") .style.backgroundImage; const problemBackgroundImage = new Image(); problemBackgroundImage.onload = function () { let aspect_ratio = this.width / this.height; backgroundImageWidth = 0.45 * window.innerWidth; backgroundImageHeight = backgroundImageWidth / aspect_ratio; const calculatedHeight = window.innerWidth / aspect_ratio; let img = document.createElement("img"); img.src = dataURL; // dataURL is the value of canvas.toDataURL() canvas.width = window.innerWidth; canvas.height = calculatedHeight; canvas.style.height = calculatedHeight; // commenting out this line gives me the fullsize canvas, but the drawing does not line up. img.onload = function () { context.drawImage(img, 0, 0, canvas.width, canvas.height); context.restore(); }; }; };
almost 3 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error