1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
   | // CSS Style <style> #canvas_div {     text-align: center;     display: block;     margin-left: auto;     margin-right: auto; } canvas {   border: 2px solid black; } </style>
  <div id="canvas_div" style="overflow-x: auto;"> <canvas id="canvas" width="900" height="360"></canvas>
  <button onclick="javascript:clearArea();return false;">Clear Area</button>
  Line width : <select id="selWidth">     <option value="11">11</option>     <option value="13" selected="selected">13</option>     <option value="15">15</option> </select>
  Color : <select id="selColor">     <option value="black">black</option>     <option value="blue" selected="selected">blue</option>     <option value="red">red</option>     <option value="green">green</option>     <option value="yellow">yellow</option>     <option value="gray">gray</option> </select> </div>
  <script> // When true, moving the mouse draws on the canvas let isDrawing = false; let x = 0; let y = 0;
  const canvas = document.getElementById('canvas'); const context = canvas.getContext('2d');
  // event.offsetX, event.offsetY gives the (x,y) offset from the edge of the canvas.
  // Add the event listeners for mousedown, mousemove, and mouseup canvas.addEventListener('mousedown', (e) => {   x = e.offsetX;   y = e.offsetY;   isDrawing = true; });
  canvas.addEventListener('mousemove', (e) => {   if (isDrawing) {     drawLine(context, x, y, e.offsetX, e.offsetY);     x = e.offsetX;     y = e.offsetY;   } });
  canvas.addEventListener('mouseup', (e) => {   if (isDrawing) {     drawLine(context, x, y, e.offsetX, e.offsetY);     x = 0;     y = 0;     isDrawing = false;   } });
  function drawLine(context, x1, y1, x2, y2) {   context.beginPath();   context.strokeStyle = document.getElementById('selColor').value;   context.lineWidth = document.getElementById('selWidth').value;   context.lineJoin = "round";   context.moveTo(x1, y1);   context.lineTo(x2, y2);   context.closePath();   context.stroke(); }
  function clearArea() {     context.setTransform(1, 0, 0, 1, 0, 0);     context.clearRect(0, 0, context.canvas.width, context.canvas.height); } </script>
   |