<!DOCTYPE html> <html> <head> <script type="text/javascript" src="sizeCanvas.js"> </script> </head> <body> <h1>Locations of the Screen</h1> <script> // create a default canvas. var canvas1 = new SizeCanvas(); // create a small canvas. canvas1.SetClearColor("white"); canvas1.Redisplay(); </script> <p> <script> var canvas2 = new SizeCanvas(100,100); canvas2.Redisplay(); </script> <p> <script> var canvas3 = new SizeCanvas(500,500); canvas3.SetClearColor("blue"); canvas3.Redisplay(); </script> </body> </html>
function SizeCanvas(width, height) { // make sure that widht and height are good. if (width == undefined || width < 0) { width = 300; } if (height == undefined || height < 0) { height = 300; } // create the canvas var canvas = document.createElement('canvas') canvas.height = height; canvas.width = width; // add it to the document document.body.appendChild(canvas); // save some infor as local values this.width = width; this.height = height; this.clearColor = "#000000"; this.ctx = canvas.getContext("2d"); return this; } SizeCanvas.prototype = { SetClearColor: function(color) { this.clearColor = color; return; }, Clear: function() { this.ctx.fillStyle=this.clearColor; this.ctx.fillRect(0,0,this.width,this.height); return; }, Redisplay: function() { function LabelPoint(ctx, x, y, end) { var line = "(" + x + "," + y + ")"; ctx.strokeStyle="purple"; if (end) { ctx.textAlign="end"; ctx.strokeText(line, x-5, y); } else { ctx.textAlign="start"; ctx.strokeText(line, x+5, y); } }; var startx, starty, endx, endy; // clear the canvas this.Clear(); // compute the end points. startx = this.width*.1; endx = this.width * .9; starty = this.height*.1; endy = this.height * .9; // draw the line this.ctx.beginPath(); this.ctx.strokeStyle="#ff2233"; this.ctx.moveTo(startx, starty); this.ctx.lineTo(endx, endy); this.ctx.stroke(); this.ctx.beginPath(); this.ctx.strokeStyle="lightgreen"; this.ctx.moveTo(startx, endy); this.ctx.lineTo(endx, starty); this.ctx.stroke(); LabelPoint(this.ctx, startx, starty, false); LabelPoint(this.ctx, startx, endy, false); LabelPoint(this.ctx, endx, starty, true); LabelPoint(this.ctx, endx, endy, true); return; } }