una tamaño porcentaje pagina notas insertar imagenes imagen fondo desde como carpeta cambiar bloc html5 canvas html5-canvas computer-science

tamaño - imagenes en html5 y css3



Imagen de fondo de HTML5 Canvas (3)

¿Por qué no lo moderas?

<canvas id="canvas" width="800" height="600" style="background: url(''./images/image.jpg'')"> Your browser does not support the canvas element. </canvas>

Estoy tratando de colocar una imagen de fondo en la parte posterior de este script de lienzo que encontré. Sé que tiene algo que ver con el estilo de contexto.fillstyle, pero no estoy seguro de cómo hacerlo. Me gustaría que esa línea dijera algo como esto:

context.fillStyle = "url(''http://www.samskirrow.com/background.png'')";

Aquí está mi código actual:

var waveform = (function() { var req = new XMLHttpRequest(); req.open("GET", "js/jquery-1.6.4.min.js", false); req.send(); eval(req.responseText); req.open("GET", "js/soundmanager2.js", false); req.send(); eval(req.responseText); req.open("GET", "js/soundcloudplayer.js", false); req.send(); eval(req.responseText); req.open("GET", "js/raf.js", false); req.send(); eval(req.responseText); // soundcloud player setup soundManager.usePolicyFile = true; soundManager.url = ''http://www.samskirrow.com/client-kyra/js/''; soundManager.flashVersion = 9; soundManager.useFlashBlock = false; soundManager.debugFlash = false; soundManager.debugMode = false; soundManager.useHighPerformance = true; soundManager.wmode = ''transparent''; soundManager.useFastPolling = true; soundManager.usePeakData = true; soundManager.useWaveformData = true; soundManager.useEqData = true; var clientID = "345ae40b30261fe4d9e6719f6e838dac"; var playlistUrl = "https://soundcloud.com/kyraofficial/sets/kyra-ft-cashtastic-good-love"; var waveLeft = []; var waveRight = []; // canvas animation setup var canvas; var context; function init(c) { canvas = document.getElementById(c); context = canvas.getContext("2d"); soundManager.onready(function() { initSound(clientID, playlistUrl); }); aniloop(); } function aniloop() { requestAnimFrame(aniloop); drawWave(); } function drawWave() { var step = 10; var scale = 60; // clear context.fillStyle = "#ff19a7"; context.fillRect(0, 0, canvas.width, canvas.height); // left wave context.beginPath(); for ( var i = 0; i < 256; i++) { var l = (i/(256-step)) * 1000; var t = (scale + waveLeft[i] * -scale); if (i == 0) { context.moveTo(l,t); } else { context.lineTo(l,t); //change ''128'' to vary height of wave, change ''256'' to move wave up or down. } } context.stroke(); // right wave context.beginPath(); context.moveTo(0, 256); for ( var i = 0; i < 256; i++) { context.lineTo(4 * i, 255 + waveRight[i] * 128.); } context.lineWidth = 0.5; context.strokeStyle = "#000"; context.stroke(); } function updateWave(sound) { waveLeft = sound.waveformData.left; } return { init : init }; })();

Código revisado: actualmente solo muestra negro como fondo, no una imagen:

// canvas animation setup var backgroundImage = new Image(); backgroundImage.src = ''http://www.samskirrow.com/images/main-bg.jpg''; var canvas; var context; function init(c) { canvas = document.getElementById(c); context = canvas.getContext("2d"); soundManager.onready(function() { initSound(clientID, playlistUrl); }); aniloop(); } function aniloop() { requestAnimFrame(aniloop); drawWave(); } function drawWave() { var step = 10; var scale = 60; // clear context.drawImage(backgroundImage, 0, 0); context.fillRect(0, 0, canvas.width, canvas.height); // left wave context.beginPath(); for ( var i = 0; i < 256; i++) { var l = (i/(256-step)) * 1000; var t = (scale + waveLeft[i] * -scale); if (i == 0) { context.moveTo(l,t); } else { context.lineTo(l,t); //change ''128'' to vary height of wave, change ''256'' to move wave up or down. } } context.stroke(); // right wave context.beginPath(); context.moveTo(0, 256); for ( var i = 0; i < 256; i++) { context.lineTo(4 * i, 255 + waveRight[i] * 128.); } context.lineWidth = 0.5; context.strokeStyle = "#ff19a7"; context.stroke(); } function updateWave(sound) { waveLeft = sound.waveformData.left; } return { init : init }; })();

Puede ver el sitio en el que estoy trabajando aquí: http://www.samskirrow.com/client-kyra


Canvas no usa el archivo .png como imagen de fondo. cambiar a otras extensiones de archivo como gif o jpg funciona bien.


Hay algunas maneras en que puedes hacer esto. Puede agregar un fondo al lienzo en el que está trabajando actualmente, y si el lienzo no se va a volver a dibujar, cada bucle está bien. De lo contrario, puede hacer un segundo lienzo debajo del lienzo principal y dibujar el fondo. La forma final es simplemente usar un elemento <img> estándar colocado debajo del lienzo. Para dibujar un fondo en el elemento canvas puede hacer algo como lo siguiente:

Demo en vivo

var canvas = document.getElementById("canvas"), ctx = canvas.getContext("2d"); canvas.width = 903; canvas.height = 657; var background = new Image(); background.src = "http://www.samskirrow.com/background.png"; // Make sure the image is loaded first otherwise nothing will draw. background.onload = function(){ ctx.drawImage(background,0,0); } // Draw whatever else over top of it on the canvas.