Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML Canvas Full Screen

I'm playing with the following application using the HTML Canvas: http://driz.co.uk/particles/

At the moment it is set to 640x480 pixels, but I would like to make it full screen as it will be shown a projector. However as far as I can tell I cannot set the canvas size to be 100% as the variables only except numbers and not the %. Using CSS just stretches it rather than making it actual full screen.

Any ideas?

EDIT: Tried finding the height and width using jQuery but it breaks the canvas any ideas why?

var $j = jQuery.noConflict();   var canvas; var ctx; var canvasDiv; var outerDiv;  var canvasW = $j('body').width(); var canvasH = $j('body').height();  //var canvasW     = 640; //var canvasH     = 480;  var numMovers   = 550; var movers      = []; var friction    = .96; var radCirc     = Math.PI * 2;  var mouseX, mouseY, mouseVX, mouseVY, prevMouseX = 0, prevMouseY = 0;    var isMouseDown = true;    function init() {     canvas = document.getElementById("mainCanvas");      if( canvas.getContext )     {         setup();         setInterval( run , 33 );     } }  function setup() {     outerDiv = document.getElementById("outer");     canvasDiv = document.getElementById("canvasContainer");     ctx = canvas.getContext("2d");      var i = numMovers;     while( i-- )     {         var m = new Mover();         m.x  = canvasW * .5;         m.y  = canvasH * .5;         m.vX = Math.cos(i) * Math.random() * 25;         m.vY = Math.sin(i) * Math.random() * 25;         m.size = 2;         movers[i] = m;     }      document.onmousedown = onDocMouseDown;     document.onmouseup   = onDocMouseUp;     document.onmousemove = onDocMouseMove; }  function run() {     ctx.globalCompositeOperation = "source-over";     ctx.fillStyle = "rgba(8,8,12,.65)";     ctx.fillRect( 0 , 0 , canvasW , canvasH );     ctx.globalCompositeOperation = "lighter";      mouseVX    = mouseX - prevMouseX;     mouseVY    = mouseY - prevMouseY;     prevMouseX = mouseX;     prevMouseY = mouseY;      var toDist   = canvasW / 1.15;     var stirDist = canvasW / 8;     var blowDist = canvasW / 2;      var Mrnd   = Math.random;     var Mabs   = Math.abs;     var Msqrt  = Math.sqrt;     var Mcos   = Math.cos;     var Msin   = Math.sin;     var Matan2 = Math.atan2;     var Mmax   = Math.max;     var Mmin   = Math.min;      var i = numMovers;     while( i-- )     {         var m  = movers[i];         var x  = m.x;         var y  = m.y;         var vX = m.vX;         var vY = m.vY;          var dX = x - mouseX;         var dY = y - mouseY;          var d = Msqrt( dX * dX + dY * dY );         var a = Matan2( dY , dX );         var cosA = Mcos( a );         var sinA = Msin( a );          if( isMouseDown )         {             if( d < blowDist )             {                 var blowAcc = ( 1 - ( d / blowDist ) ) * 2;                 vX += cosA * blowAcc + .5 - Mrnd();                 vY += sinA * blowAcc + .5 - Mrnd();             }         }          if( d < toDist )         {             var toAcc = ( 1 - ( d / toDist ) ) * canvasW * .0014;             vX -= cosA * toAcc;             vY -= sinA * toAcc;         }          if( d < stirDist )         {             var mAcc = ( 1 - ( d / stirDist ) ) * canvasW * .00022;             vX += mouseVX * mAcc;             vY += mouseVY * mAcc;                    }           vX *= friction;         vY *= friction;          var avgVX = Mabs( vX );         var avgVY = Mabs( vY );         var avgV = ( avgVX + avgVY ) * .5;          if( avgVX < .1 ) vX *= Mrnd() * 3;         if( avgVY < .1 ) vY *= Mrnd() * 3;          var sc = avgV * .45;         sc = Mmax( Mmin( sc , 3.5 ) , .4 );           var nextX = x + vX;         var nextY = y + vY;          if( nextX > canvasW )         {             nextX = canvasW;             vX *= -1;         }         else if( nextX < 0 )         {             nextX = 0;             vX *= -1;         }          if( nextY > canvasH )         {             nextY = canvasH;             vY *= -1;         }         else if( nextY < 0 )         {             nextY = 0;             vY *= -1;         }           m.vX = vX;         m.vY = vY;         m.x  = nextX;         m.y  = nextY;          ctx.fillStyle = m.color;         ctx.beginPath();         ctx.arc( nextX , nextY , sc , 0 , radCirc , true );         ctx.closePath();         ctx.fill();          }      //rect( ctx , mouseX - 3 , mouseY - 3 , 6 , 6 ); }   function onDocMouseMove( e ) {     var ev = e ? e : window.event;     mouseX = ev.clientX - outerDiv.offsetLeft - canvasDiv.offsetLeft;     mouseY = ev.clientY - outerDiv.offsetTop  - canvasDiv.offsetTop; }  function onDocMouseDown( e ) {     isMouseDown = true;     return false; }  function onDocMouseUp( e ) {     isMouseDown = true;     return false; }    // ==========================================================================================   function Mover() {     this.color = "rgb(" + Math.floor( Math.random()*255 ) + "," + Math.floor( Math.random()*255 ) + "," + Math.floor( Math.random()*255 ) + ")";     this.y     = 0;     this.x     = 0;     this.vX    = 0;     this.vY    = 0;     this.size  = 0;  }   // ==========================================================================================   function rect( context , x , y , w , h )  {     context.beginPath();     context.rect( x , y , w , h );     context.closePath();     context.fill(); }   // ========================================================================================== 
like image 934
Cameron Avatar asked Oct 27 '10 20:10

Cameron


People also ask

How do I make HTML canvas full screen?

Code to make canvas occupy full page :innerWidth; canvas. height = window. innerHeight; //Done! Enjoy full page canvas!

How do I make my canvas 100% width?

In order to make the canvas full-screen width and height always, meaning even when the browser is resized, you need to run your draw loop within a function that resizes the canvas to the window. innerHeight and window. innerWidth .

How do you expand to full screen in HTML?

click(function(e){ $('#myDiv'). toggleClass('fullscreen'); }); The trick is in setting position:fixed , by toggling the . fullscreen class.

How do you make a canvas screen?

To make the HTML canvas full screen with JavaScript, we can set the canvas width and height to the browser window width and height respectively. We select the canvas with document. querySelector . Then we add the resize function that sets the canvas width and height to the window.


1 Answers

The javascript has

var canvasW     = 640; var canvasH     = 480; 

in it. Try changing those as well as the css for the canvas.

Or better yet, have the initialize function determine the size of the canvas from the css!

in response to your edits, change your init function:

function init() {     canvas = document.getElementById("mainCanvas");     canvas.width = document.body.clientWidth; //document.width is obsolete     canvas.height = document.body.clientHeight; //document.height is obsolete     canvasW = canvas.width;     canvasH = canvas.height;      if( canvas.getContext )     {         setup();         setInterval( run , 33 );     } } 

Also remove all the css from the wrappers, that just junks stuff up. You have to edit the js to get rid of them completely though... I was able to get it full screen though.

html, body {     overflow: hidden; } 

Edit: document.width and document.height are obsolete. Replace with document.body.clientWidth and document.body.clientHeight

like image 102
Nick Larsen Avatar answered Sep 24 '22 01:09

Nick Larsen