martes, 14 de mayo de 2013

Canvas que ocupa toda la ventana del navegador

Para tener un canvas que ocupe toda la ventana del navegador debemos hacer las siguientes cosas:

  • Para que el body del HTML ocupe toda la ventana del navegador, sin dejar ningún borde, añadimos el siguiente atributo a la etiqueta body:
style="margin:0; padding:0; width:100%; height:100%;"
  • Para que el canvas no tenga barras de scroll hay que añadir el siguiente atributo al canvas:
style="display:block;"
  • Para que el canvas ocupe toda la ventana, cada vez que vayamos a volver a dibujar hay que redimensionarlo, con las siguientes instrucciones:
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
Un ejemplo de uso:
<!DOCTYPE html>
<html>
 <head>
    <script type="text/javascript" >
        var canvas;
        var ctx; //contexto del canvas.
        
        function setup(){
            // accedemos al canvas
            canvas = document.getElementById('my_canvas');

            // si se puede acceder al contexto del canvas
            if (canvas.getContext){ 
                // accedemos al contexto del canvas 
                // y llamamos a nuestra función de dibujo.
                ctx = canvas.getContext('2d');
                draw();
            }
            else { // el canvas no está soportado
                alert('Este navegador no es compatible con canvas');
            }
        }
        
        // nuestra función de dibujo
        function draw(){                
            // lo ajustamos al tamaño de la ventana del navegador
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
            // dibujamos. En este caso, 10000 lineas aleatorias
            pintaLineasAleatorias(canvas.width, canvas.height, 10000)
        }
        
        function pintaLineasAleatorias(width, height, n)
        {
            var x1, y1, x2, y2;
   
            for (var i=0; i< n; i++)
     {
         x1 = Math.floor((Math.random()*(width + 1)));
         x2 = Math.floor((Math.random()*(width + 1)));
         y1 = Math.floor((Math.random()*(height +1)));
  y2 = Math.floor((Math.random()*(height +1)));
  ctx.strokeStyle = 'rgb('
                    + Math.floor(Math.random()*256)
                    + ',' + Math.floor(Math.random()*256)
                    + ',' + Math.floor(Math.random()*256)
                    + ')';
  ctx.beginPath();
  ctx.moveTo(x1,y1);
  ctx.lineTo(x2,y2);
                ctx.closePath();
  ctx.stroke();
      }
        }
    </script>
 </head>
 <body style="margin:0; padding:0; width:100%; height:100%;" onload="setup()" >
  <canvas id="my_canvas" style="display:block;"></canvas>
 </body>
</html>


No hay comentarios:

Publicar un comentario