1. ホーム
  2. Web制作
  3. html5

カスタムお絵かきボード用JavaScript+Canvasサンプルコード

2022-01-31 02:56:43

最近、HTML5の新しい要素プロパティをいくつか調査したところ、特に新しいタグ要素Canvasがとても便利であることがわかりました。正式には、Canvas API(キャンバス)は HTML5 の新しいタグで、ウェブページにリアルタイムで画像を生成し、画像コンテンツを操作することができます。以下では、JavaScriptとCanvasを組み合わせて、Canvasの機能を実装しています。

効果のデモ画像です。

コード部分(コピーして使うだけです)

<!DOCTYPE HTML>
<html>
<head>  
<meta charset="utf-8" />  
<title>JavaScript+Canvas for custom drawing boards</title>
</head>
<body>
<canvas id="canvas" width="600" height="300"></canvas>
<script type="text/javascript">   
  var canvas = document.getElementById("canvas");   
  var ctx = canvas.getContext("2d");   
  // Draw a black rectangle   
  ctx.fillStyle="black";   
  ctx.fillRect(0,0,600,300);   
  //Press the marker   
  var onoff = false;  
  //the variables oldx and oldy represent the coordinates of the mouse before it moves  
  var oldx = -10;   
  var oldy = -10;   
  //set the color  
  var linecolor = "white";   
  //set the line width   
  var linw = 4;   
  //add mouse-over events   
  canvas.addEventListener("mousemove",draw,true); //the third parameter is mainly related to capture or bubble   
  //add the mouse press event   
  canvas.addEventListener("mousedown",down,false);   
  //add mouse popup event   
  canvas.addEventListener("mouseup",up,false);   
  function down(event){     
   onoff = true;     
   oldx = event.pageX-10;      
   oldy = event.pageY-10;  
   //console.log(event.pageX+'............. .000.............' +event.pageY);
  //event.pageX and event.pageY relative to the entire page mouse position including the overflow (which is the scrollbar)   
  }   
  function up(){     
   onoff = false;   
 }  
 function draw(event){    
  if(onoff == true){        
   var newx = event.pageX-10;        
   var newy = event.pageY-10;        
   ctx.beginPath();//beginPath() discards any currently defined path and starts a new one. It sets the current point to (0,0).       
   ctx.moveTo(oldx,oldy); //move to the coordinates at the time of the click, using that coordinate as the origin      
   ctx.lineTo(newx,newy); //draw the new path       
   ctx.strokeStyle=linecolor;       
   ctx.lineWidth=linw;       
   ctx.lineCap="round";       
   ctx.stroke();// The stroke() method will actually draw the path defined by the moveTo() and lineTo() methods. The default color is black.    
//assign the new mouse position to the starting coordinates for the next drawing      
   oldx = newx;      
   oldy = newy;   
  };
 };
</script>
</body>
</html>


以上、本記事の全内容をご紹介しましたが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層ご支援いただければ幸いです。