Advertisement
obernardovieira

Draw on canvas using mouse

Feb 13th, 2017
415
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 4.88 KB | None | 0 0
  1. <!--
  2. thanks to Kauê Gimenes
  3. http://stackoverflow.com/questions/2368784/draw-on-html5-canvas-using-a-mouse
  4. -->
  5.  
  6. <html>
  7.     <script type="text/javascript">
  8.     var canvas, ctx, flag = false,
  9.         prevX = 0,
  10.         currX = 0,
  11.         prevY = 0,
  12.         currY = 0,
  13.         dot_flag = false;
  14.  
  15.     var x = "black",
  16.         y = 2;
  17.    
  18.     function init() {
  19.         canvas = document.getElementById('can');
  20.         ctx = canvas.getContext("2d");
  21.         w = canvas.width;
  22.         h = canvas.height;
  23.    
  24.         canvas.addEventListener("mousemove", function (e) {
  25.             findxy('move', e)
  26.         }, false);
  27.         canvas.addEventListener("mousedown", function (e) {
  28.             findxy('down', e)
  29.         }, false);
  30.         canvas.addEventListener("mouseup", function (e) {
  31.             findxy('up', e)
  32.         }, false);
  33.         canvas.addEventListener("mouseout", function (e) {
  34.             findxy('out', e)
  35.         }, false);
  36.     }
  37.    
  38.     function color(obj) {
  39.         switch (obj.id) {
  40.             case "green":
  41.                 x = "green";
  42.                 break;
  43.             case "blue":
  44.                 x = "blue";
  45.                 break;
  46.             case "red":
  47.                 x = "red";
  48.                 break;
  49.             case "yellow":
  50.                 x = "yellow";
  51.                 break;
  52.             case "orange":
  53.                 x = "orange";
  54.                 break;
  55.             case "black":
  56.                 x = "black";
  57.                 break;
  58.             case "white":
  59.                 x = "white";
  60.                 break;
  61.         }
  62.         if (x == "white") y = 14;
  63.         else y = 2;
  64.    
  65.     }
  66.    
  67.     function draw() {
  68.         ctx.beginPath();
  69.         ctx.moveTo(prevX, prevY);
  70.         ctx.lineTo(currX, currY);
  71.         ctx.strokeStyle = x;
  72.         ctx.lineWidth = y;
  73.         ctx.stroke();
  74.         ctx.closePath();
  75.     }
  76.    
  77.     function erase() {
  78.         var m = confirm("Want to clear");
  79.         if (m) {
  80.             ctx.clearRect(0, 0, w, h);
  81.             document.getElementById("canvasimg").style.display = "none";
  82.         }
  83.     }
  84.    
  85.     function save() {
  86.         document.getElementById("canvasimg").style.border = "2px solid";
  87.         var dataURL = canvas.toDataURL();
  88.         document.getElementById("canvasimg").src = dataURL;
  89.         document.getElementById("canvasimg").style.display = "inline";
  90.     }
  91.    
  92.     function findxy(res, e) {
  93.         if (res == 'down') {
  94.             prevX = currX;
  95.             prevY = currY;
  96.             currX = e.clientX - canvas.offsetLeft;
  97.             currY = e.clientY - canvas.offsetTop;
  98.    
  99.             flag = true;
  100.             dot_flag = true;
  101.             if (dot_flag) {
  102.                 ctx.beginPath();
  103.                 ctx.fillStyle = x;
  104.                 ctx.fillRect(currX, currY, 2, 2);
  105.                 ctx.closePath();
  106.                 dot_flag = false;
  107.             }
  108.         }
  109.         if (res == 'up' || res == "out") {
  110.             flag = false;
  111.         }
  112.         if (res == 'move') {
  113.             if (flag) {
  114.                 prevX = currX;
  115.                 prevY = currY;
  116.                 currX = e.clientX - canvas.offsetLeft;
  117.                 currY = e.clientY - canvas.offsetTop;
  118.                 draw();
  119.             }
  120.         }
  121.     }
  122.     </script>
  123.     <body onload="init()">
  124.         <canvas id="can" width="400" height="400" style="position:absolute;top:10%;left:10%;border:2px solid;"></canvas>
  125.         <div style="position:absolute;top:12%;left:43%;">Choose Color</div>
  126.         <div style="position:absolute;top:15%;left:45%;width:10px;height:10px;background:green;" id="green" onclick="color(this)"></div>
  127.         <div style="position:absolute;top:15%;left:46%;width:10px;height:10px;background:blue;" id="blue" onclick="color(this)"></div>
  128.         <div style="position:absolute;top:15%;left:47%;width:10px;height:10px;background:red;" id="red" onclick="color(this)"></div>
  129.         <div style="position:absolute;top:17%;left:45%;width:10px;height:10px;background:yellow;" id="yellow" onclick="color(this)"></div>
  130.         <div style="position:absolute;top:17%;left:46%;width:10px;height:10px;background:orange;" id="orange" onclick="color(this)"></div>
  131.         <div style="position:absolute;top:17%;left:47%;width:10px;height:10px;background:black;" id="black" onclick="color(this)"></div>
  132.         <div style="position:absolute;top:20%;left:43%;">Eraser</div>
  133.         <div style="position:absolute;top:22%;left:45%;width:15px;height:15px;background:white;border:2px solid;" id="white" onclick="color(this)"></div>
  134.         <img id="canvasimg" style="position:absolute;top:10%;left:52%;" style="display:none;">
  135.         <input type="button" value="save" id="btn" size="30" onclick="save()" style="position:absolute;top:55%;left:10%;">
  136.         <input type="button" value="clear" id="clr" size="23" onclick="erase()" style="position:absolute;top:55%;left:15%;">
  137.     </body>
  138.     </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement