Draw a Spiral with Resize
copy const canvas = document.body .appendChild ( document.createElement ( 'canvas' ) ) ; const c = canvas.getContext ( '2d' ) ; function resize( ) { canvas.width = window.innerWidth ; canvas.height = window.innerHeight ; draw( ) ; } function draw( ) { c.clearRect ( 0 , 0 , canvas.width , canvas.height ) ; c.fillStyle = 'blue' ; const iter = 300 , halfWidth = window.innerWidth / 2 , halfHeight = window.innerHeight / 2 ; let rad = 0 , theta = 0 , x, y; for ( let i = 0 ; i < iter; i++ ) { x = halfWidth + rad * Math .cos ( theta) ; y = halfHeight + rad * Math .sin ( theta) ; c.fillRect ( x, y, 5 , 5 ) ; rad += Math .min ( window.innerWidth , window.innerHeight ) * 0.0015 ; theta += .1; } } resize( ) ; window.addEventListener ( 'resize' , resize) ;
Try it out…
Expanding on yesterdays post, this draws a resizable sprial on a canvas.
Easy Canvas Resize
copy const canvas = document.body .appendChild ( document.createElement ( 'canvas' ) ) ; const c = canvas.getContext ( '2d' ) ; function resize( ) { canvas.width = window.innerWidth ; canvas.height = window.innerHeight ; draw( ) ; } function draw( ) { c.clearRect ( 0 , 0 , canvas.width , canvas.height ) ; c.fillStyle = 'red' ; // 30% width and height c.fillRect ( 30 , 30 , window.innerWidth * .3, window.innerHeight * .3) ; } resize( ) ; window.addEventListener ( 'resize' , resize) ;
Try it out…
Resizing a canvas is unusual, because setting the width/height
of a canvas completely erases it.
If your canvas isn’t animating, you can just redraw after resizing. Depending on what you’re drawing, working in percentages instead of pixel values can make things easier.
If you hit the “Try it out…” button, go into fullscreen and resize your browser window you’ll see things in action.