canvasでデザイン画像を作成

スポンサーリンク
スポンサーリンク

canvasとは?

HTML5とJavaScriptを組み合わせて図を描画できる機能のこと。
マウスイベントなどユーザーのイベント処理もできる。

原点(0,0)
x方向→
y方向↓
(100,100)

ウクライナの国旗をcanvasで作る

国旗の意味
「独立ウクライナの旗」と呼ばれる。
ソ連邦時代からウクライナ独立のシンボルとして使われた。
青は空を、黄は大地を染める小麦と農業を表している。

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8"/>
  <script type="application/javascript">
    function draw() {
      var canvas = document.getElementById("canvas");
      if (canvas.getContext) {
        var ctx = canvas.getContext("2d");

        ctx.fillStyle = "rgb(0,91,187)";
        ctx.fillRect (0,0,900,300);

        ctx.fillStyle = "rgb(255, 213, 0)";
        ctx.fillRect (0, 300, 900, 600);
      }
    }
  </script>
 </head>
 <body onload="draw();">
   <canvas id="canvas" width="900" height="600"></canvas>
 </body>
</html>

ロシアの国旗をcanvasで作る

国旗の意味
「スラブ3原色」と呼ばれる白・青・赤の3色旗。
白は高貴と率直を、青は名誉と純潔性を、赤は愛と勇気を表す。
また、白がベラルーシ人、青がウクライナ人、赤がロシア人を表すともいわれる。
引用:東京都立図書館WEBサイトより

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8"/>
  <script type="application/javascript">
    function draw() {
      var canvas = document.getElementById("canvas");
      if (canvas.getContext) {
        var ctx = canvas.getContext("2d");

        ctx.fillStyle = "rgb(255,255,255)";
        ctx.fillRect (0,0,900,200);

        ctx.fillStyle = "rgb(0,54,168)";
        ctx.fillRect (0,200,900,400);

        ctx.fillStyle = "rgb(214, 39, 24)";
        ctx.fillRect (0, 400, 900, 600);
      }
    }
  </script>
 </head>
 <body onload="draw();">
   <canvas id="canvas" width="900" height="600"></canvas>
 </body>
</html>

サンプル

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8"/>
  <script type="application/javascript">
    function draw() {
      var canvas = document.getElementById("canvas");
      if (canvas.getContext) {
        var ctx = canvas.getContext("2d");

        ctx.fillStyle = "rgb(200,0,0)";
        ctx.fillRect (10, 10, 50, 50);

        ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
        ctx.fillRect (30, 30, 50, 50);
      }
    }
  </script>
 </head>
 <body onload="draw();">
   <canvas id="canvas" width="150" height="150"></canvas>
 </body>
</html>

解説

fillRect(x, y, width, height)
塗りつぶされた矩形

strokeRect(x, y, width, height)
矩形の輪郭

clearRect(x, y, width, height)
指定された領域を消去して完全な透明に

ctx.fillStyle = “rgba(0, 0, 200, 0.5)”;
色と透明度を指定

絵を描画

function draw() {
  var canvas = document.getElementById('canvas');
  if (canvas.getContext){
    var ctx = canvas.getContext('2d');

    ctx.beginPath();
    ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // 外の円
    ctx.moveTo(110, 75);
    ctx.arc(75, 75, 35, 0, Math.PI, false);  // 口 (時計回り)
    ctx.moveTo(65, 65);
    ctx.arc(60, 65, 5, 0, Math.PI * 2, true);  // 左目
    ctx.moveTo(95, 65);
    ctx.arc(90, 65, 5, 0, Math.PI * 2, true);  // 右目
    ctx.stroke();
  }
}

moveToメソッドを取り除くと、繋がっている線が見れる。

波型

function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  var lineJoin = ['round','bevel','miter'];
  ctx.lineWidth = 10;
  for (var i=0;i<lineJoin.length;i++){
    ctx.lineJoin = lineJoin[i];
    ctx.beginPath();
    ctx.moveTo(-5,5+i*40);
    ctx.lineTo(35,45+i*40);
    ctx.lineTo(75,5+i*40);
    ctx.lineTo(115,45+i*40);
    ctx.lineTo(155,5+i*40);
    ctx.stroke();
  }
}

三角形

function draw() {
  var canvas = document.getElementById('canvas');
  if (canvas.getContext){
    var ctx = canvas.getContext('2d');

    // Filled triangle
    ctx.beginPath();
    ctx.moveTo(25, 25);
    ctx.lineTo(105, 25);
    ctx.lineTo(25, 105);
    ctx.fill();

    // Stroked triangle
    ctx.beginPath();
    ctx.moveTo(125, 125);
    ctx.lineTo(125, 45);
    ctx.lineTo(45, 125);
    ctx.closePath();
    ctx.stroke();
  }
}
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  for (var i = 0; i < 6; i++) {
    for (var j = 0; j < 6; j++) {
      ctx.fillStyle = `rgb(${Math.floor(255-42.5*i)}, ${Math.floor(255-42.5*j)}, 0)`;
      ctx.fillRect(j*25, i*25, 25, 25);
    }
  }
}
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  for (var i = 0; i < 6; i++) {
    for (var j = 0; j < 6; j++) {
      ctx.fillStyle = `rgb(${Math.floor(42.5*i)}, ${Math.floor(42.5*j)}, 255)`;
      ctx.fillRect(j*25, i*25, 25, 25);
    }
  }
}

色をランダムで選ぶ

function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  for (var i = 0; i < 6; i++) {
    for (var j = 0; j < 6; j++) {
      ctx.fillStyle = `rgb(255 ,${gra(255,1)} , ${gra(255,1)})`;
      //ctx.fillStyle = `rgb(${Math.floor(42.5*i)}, ${Math.floor(42.5*j)}, 255)`;
      ctx.fillRect(j*25, i*25, 25, 25);
    }
  }
}

function gra(min, max) {
  return Math.random() * (max - min) + min;
}

function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  // draw background
  ctx.fillStyle = '#FD0';
  ctx.fillRect(0,0,75,75);
  ctx.fillStyle = '#6C0';
  ctx.fillRect(75,0,75,75);
  ctx.fillStyle = '#09F';
  ctx.fillRect(0,75,75,75);
  ctx.fillStyle = '#F30';
  ctx.fillRect(75,75,75,75);
}
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');
  // draw background
  ctx.fillStyle = '#FD0';
  ctx.fillRect(0,0,75,75);
  ctx.fillStyle = '#6C0';
  ctx.fillRect(75,0,75,75);
  ctx.fillStyle = '#09F';
  ctx.fillRect(0,75,75,75);
  ctx.fillStyle = '#F30';
  ctx.fillRect(75,75,75,75);

  ctx.fillStyle = '#FFF';
  ctx.globalAlpha = 0.2;

  for (i=0;i<7;i++){
    ctx.beginPath();
    ctx.arc(75,75,10+10*i,0,Math.PI*2,true);
    ctx.fill();
  }

}

コメント

タイトルとURLをコピーしました