Guest User

Untitled

a guest
Nov 18th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Drawing Lines and Curves in Canvas</title>
  6. <style>
  7. #canvas{
  8. border: 1px solid #999;
  9. margin: 1rem auto;
  10. display: block;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <h1>Lines and Curves on the HTML5 Canvas</h1>
  16. <canvas id="canvas"></canvas>
  17.  
  18. <script>
  19. let canvas, ctx;
  20. let midx, midy, midx1, midy1, midx2, midy2;
  21.  
  22. document.addEventListener('DOMContentLoaded', (ev)=>{
  23. canvas = document.getElementById('canvas');
  24. ctx = canvas.getContext('2d');
  25. canvas.width = 600;
  26. canvas.height = 400;
  27.  
  28. canvas.addEventListener('mousedown', start);
  29. //canvas.addEventListener('mouseup', end);
  30. //canvas.addEventListener('mouseup', endQC);
  31. canvas.addEventListener('mouseup', endBC);
  32.  
  33.  
  34. midx = canvas.width/2;
  35. midy = canvas.height/2;
  36.  
  37. midx1 = canvas.width/4;
  38. midy1 = canvas.height/4;
  39. midx2 = canvas.width - midx1;
  40. midy2 = canvas.height - midy1;
  41.  
  42. ctx.lineWidth = 5;
  43. ctx.beginPath();
  44. ctx.arc(midx, midy, 5, 0, 2 * Math.PI, false);
  45. ctx.strokeStyle = 'red';
  46. ctx.stroke();
  47.  
  48. ctx.beginPath();
  49. ctx.arc(midx1, midy1, 5, 0, 2 * Math.PI, false);
  50. ctx.strokeStyle = 'orange';
  51. ctx.stroke();
  52.  
  53. ctx.beginPath();
  54. ctx.arc(midx2, midy2, 5, 0, 2 * Math.PI, false);
  55. ctx.strokeStyle = 'skyblue';
  56. ctx.stroke();
  57.  
  58. ctx.lineCap = 'round'; //butt, round
  59. ctx.lineWidth = 10;
  60. });
  61.  
  62. const start = function(ev){
  63. ctx.beginPath();
  64. ctx.strokeStyle = '#bada55';
  65. console.log('from', ev.offsetX, ev.offsetY);
  66. ctx.moveTo(ev.offsetX, ev.offsetY);
  67. }
  68. const end = function(ev){
  69. //using lineTo(x, y)
  70. console.log('to', ev.offsetX, ev.offsetY);
  71. ctx.lineTo(ev.offsetX, ev.offsetY);
  72. ctx.stroke();
  73. }
  74. const endQC = function(ev){
  75. //using quadraticCurveTo(midx, midy, endx, endy)
  76. console.log('to', ev.offsetX, ev.offsetY);
  77. let endx = ev.offsetX;
  78. let endy = ev.offsetY;
  79. ctx.quadraticCurveTo(midx, midy, endx, endy);
  80. ctx.stroke();
  81. }
  82. const endBC = function(ev){
  83. //using bezierCurveTo(midx1, midy1, midx2, midy2, endx, endy)
  84. console.log('to', ev.offsetX, ev.offsetY);
  85. let endx = ev.offsetX;
  86. let endy = ev.offsetY;
  87. ctx.bezierCurveTo(midx1, midy1, midx2, midy2, endx, endy);
  88. ctx.stroke();
  89. }
  90. </script>
  91. </body>
  92. </html>
Add Comment
Please, Sign In to add comment