SlideShare a Scribd company logo
1 of 48
Download to read offline
情報編集(Web)
HTML5 実践1
Canvas + Javascriptで図形を描く
2013年6月18日
東京藝術大学 芸術情報センター(AMC)
担当:田所淳
今日の内容
‣ 前回のjQueryから、さらに一歩進んで、HTML5の世界へ
‣ HTML5のcanvas要素をつかってみる
‣ canvas要素:プラグインを使用せずに、ブラウザに直接、図
形やアニメーションを描くことができる
‣ canvasの準備
‣ 簡単な図形を描く
‣ 色の設定
‣ くりかえしを使って、たくさんの図形を描画する
サンプルファイルのダウンロード
‣ 紹介したサンプルファイルは、全て以下からダウンロードして
ください
‣http://goo.gl/EcRSO
Canvasとは?
図形やアニメーションを描くには?
‣ これまでの方法
‣ 静止した図形を表示:GIFやJpeg、PNGなどの画像を外部
ファイルを読み込んでimg要素で表示
外部ファイル
GIF・Jpeg
PNG など
Webブラウザ
img要素
図形やアニメーションを描くには?
‣ アニメーションや変化する図形を描くには?
‣ Flash Playerや、Java Appletなど外部プラグインを利用
プラグイン
外部プログラム
Flashなど
Webブラウザ
‣ HTML5からは、プラグインを用いずに直接ブラウザに図形や
アニメーションを表示できるようになった
‣ canvas要素にJavaScriptで描画する
canvas要素
図形やアニメーションを描くには?
JavaScriptで
直接描画
Webブラウザ
Canvasとは
‣ anvas要素はスクリプト(一般的に JavaScript)を使って図形
を描くために使われる新しいHTML要素
‣ 元々はMac OS X v10.4の内部でWebKitコンポーネントと
してAppleが開発
‣ HTML5で、新しい標準規格として標準化
Canvasとは
‣ ブラウザの対応状況
‣ Internet Explorer 9、Mozilla Firefox、Google
Chrome、Safari、Operaなど全ての主要ブラウザの最新版
で実装済み
‣ IEの8以前のバージョンは未対応だが、サポートするための外
部ライブラリが開発されている
‣ ExplorerCanvas
canvas要素の書式
‣ canvas要素の書式自身は、img要素とよく似ている
‣ 例:幅400pix、高さ300pixのcanvas要素を追加する
‣ canvas要素のid属性:
‣ Javascriptなどのスクリプトで、どのcanvas要素に対して
処理を行うのかを特定する際に必要
‣ anvas要素を使用する際には常にid属性を付けてユニークな
(一意な)名称を指定する
‣ このサンプルの場合は「example」
<canvas id="example" width="400" height="300"></canvas>
canvasの準備 ‒ 基本テンプレート
canvas要素の書式
‣ まず、ベースとなるHTMLを用意する (index.html)
‣<!DOCTYPE html>
<html>
! <head>
! ! <meta http-equiv="Content-Type" charset="utf-8" />
! ! <title>Canvas Example</title>
! !
! ! <script src="canvasexample.js"></script>
! !
! ! <style type="text/css">
! ! ! canvas { border: 1px solid #999; }
! ! </style>
! </head>
! <body>
!
! ! <canvas id="example" width="400" height="300"></canvas>
!
! </body>
</html>
canvas要素の書式
‣ まず、ベースとなるHTMLを用意する (index.html)
‣<!DOCTYPE html>
<html>
! <head>
! ! <meta http-equiv="Content-Type" charset="utf-8" />
! ! <title>Canvas Example</title>
! !
! ! <script src="canvasexample.js"></script>
! !
! ! <style type="text/css">
! ! ! canvas { border: 1px solid #999; }
! ! </style>
! </head>
! <body>
!
! ! <canvas id="example" width="400" height="300"></canvas>
!
! </body>
</html>
※描画の命令を記述したJavaScript
canvas要素の書式
‣ まず、ベースとなるHTMLを用意する (index.html)
‣<!DOCTYPE html>
<html>
! <head>
! ! <meta http-equiv="Content-Type" charset="utf-8" />
! ! <title>Canvas Example</title>
! !
! ! <script src="canvasexample.js"></script>
! !
! ! <style type="text/css">
! ! ! canvas { border: 1px solid #999; }
! ! </style>
! </head>
! <body>
!
! ! <canvas id="example" width="400" height="300"></canvas>
!
! </body>
</html>
※CSSで、Canvas要素の周囲に枠線を描画
canvas要素の書式
‣ まず、ベースとなるHTMLを用意する (index.html)
<!DOCTYPE html>
<html>
! <head>
! ! <meta http-equiv="Content-Type" charset="utf-8" />
! ! <title>Canvas Example</title>
! !
! ! <script src="canvasexample.js"></script>
! !
! ! <style type="text/css">
! ! ! canvas { border: 1px solid #999; }
! ! </style>
! </head>
! <body>
!
! ! <canvas id="example" width="400" height="300"></canvas>
!
! </body>
</html>
※表示のためのCanvas要素
canvas要素の書式
‣ Canvasに図形を描画するためのJavascirptテンプレート
onload = function() {
! draw();
};
function draw(){
! var canvas = document.getElementById('example');
!
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
!
! var ctx = canvas.getContext('2d');
!
};
canvas要素の書式
‣ Canvasに図形を描画するためのJavascirptテンプレート
onload = function() {
! draw();
};
function draw(){
! var canvas = document.getElementById('example');
!
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
!
! var ctx = canvas.getContext('2d');
!
};
※ページの読込が完了したら、draw()を実行
canvas要素の書式
‣ Canvasに図形を描画するためのJavascirptテンプレート
onload = function() {
! draw();
};
function draw(){
! var canvas = document.getElementById('example');
!
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
!
! var ctx = canvas.getContext('2d');
!
};
※id名( example )からcanvas要素を抽出し、
変数 canvas に格納
canvas要素の書式
‣ Canvasに図形を描画するためのJavascirptテンプレート
onload = function() {
! draw();
};
function draw(){
! var canvas = document.getElementById('example');
!
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
!
! var ctx = canvas.getContext('2d');
!
};
※canvasに対応していないブラウザのための処理
canvas要素の書式
‣ Canvasに図形を描画するためのJavascirptテンプレート
onload = function() {
! draw();
};
function draw(){
! var canvas = document.getElementById('example');
!
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
!
! var ctx = canvas.getContext('2d');
!
}; ※2D図形描画のためのコンテキストを抽出し、
変数 ctx に格納
canvas要素の書式
‣ 実行結果:描画のためのcanvas領域が確保される
基本図形を描画する 1 - 矩形
基本図形を描画する 1 - 矩形
‣ 生成したcanvas要素の内部に、Javascriptを記述して簡単
な図形を描画してみる
‣ まずは、矩形(長方形)から
‣ canvasでは矩形を描くための3つの関数が用意されている
‣ fillRect(x,y,width,height) : 塗られた矩形を描く
‣ strokeRect(x,y,width,height) : 矩形の輪郭を描く
‣ clearRect(x,y,width,height) : 指定された領域を消去
‣ 実際にやってみよう!!
基本図形を描画する 1 - 矩形
‣ canvasexample.js に命令を追加
onload = function() {
! draw();
};
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.fillRect(50,50,540,400);
! ctx.clearRect(80,80,400,300);
! ctx.strokeRect(240,20,200,300);
};
基本図形を描画する 1 - 矩形
‣ canvasexample.js に命令を追加
onload = function() {
! draw();
};
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.fillRect(50,50,540,400);
! ctx.clearRect(80,80,400,300);
! ctx.strokeRect(240,20,200,300);
};
※追加した部分
基本図形を描画する 1 - 矩形
‣ 実行結果:3種類の矩形を表示
基本図形を描画する 2 - パス(直線)を描く
基本図形を描画する 2 - パス(直線)を描く
‣ canvasでは、一つのまとまった図形を描けるのは矩形だけ
‣ 他の図形を描くには、複数のパス(線)を組み合わせて作る
‣ パスを使用して図形を描くための命令
‣ beginPath() ‒ パスの開始
‣ closePath() ‒ パスを閉じる
‣ stroke() ‒ 線でパスを描く
‣ fill() ‒ 塗り潰しでパスを描く
‣ moveTo(x, y) ‒ パスの始点を移動する
‣ やってみよう!!
基本図形を描画する 2 - パス(直線)を描く
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.beginPath();
! ctx.moveTo(50,50);
! ctx.lineTo(500,400);
! ctx.lineTo(200,380);
! ctx.closePath();
! ctx.stroke();
! ctx.beginPath();
! ctx.moveTo(50,400);
! ctx.lineTo(300,20);
! ctx.lineTo(520,50);
! ctx.closePath();
! ctx.fill();
};
基本図形を描画する 2 - パス(直線)を描く
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.beginPath();
! ctx.moveTo(50,50);
! ctx.lineTo(500,400);
! ctx.lineTo(200,380);
! ctx.closePath();
! ctx.stroke();
! ctx.beginPath();
! ctx.moveTo(50,400);
! ctx.lineTo(300,20);
! ctx.lineTo(520,50);
! ctx.closePath();
! ctx.fill();
};
※輪郭線による描画
基本図形を描画する 2 - パス(直線)を描く
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.beginPath();
! ctx.moveTo(50,50);
! ctx.lineTo(500,400);
! ctx.lineTo(200,380);
! ctx.closePath();
! ctx.stroke();
! ctx.beginPath();
! ctx.moveTo(50,400);
! ctx.lineTo(300,20);
! ctx.lineTo(520,50);
! ctx.closePath();
! ctx.fill();
};
※塗りつぶしによる描画
基本図形を描画する 2 - パス(直線)を描く
‣ 実行結果:直線の組み合わせによる図形
基本図形を描画する 3 - 円弧や円を描く
基本図形を描画する 3 - 円弧や円を描く
‣ 円弧や円を描くために arc メソッドを使う
‣ 基本的な書式は以下の通り
‣ x, y:円の中心座標
‣ radius:半径
‣ startAngle, endAngle:円弧の始まりと終点をラジアン角
で定義 (ラジアン:0∼2πで一周する角度の単位)
‣ anticlockwise:円弧を描く回転方向を指定
arc(x, y, radius, startAngle, endAngle, anticlockwise);
基本図形を描画する 3 - 円弧や円を描く
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.beginPath();
! ctx.arc(320,240,200,0,Math.PI*2,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,160,0,Math.PI*1.5,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,40,0,Math.PI*2.0,true);
! ctx.fill();
};
基本図形を描画する 3 - 円弧や円を描く
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.beginPath();
! ctx.arc(320,240,200,0,Math.PI*2,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,160,0,Math.PI*1.5,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,40,0,Math.PI*2.0,true);
! ctx.fill();
};
※円弧1
基本図形を描画する 3 - 円弧や円を描く
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.beginPath();
! ctx.arc(320,240,200,0,Math.PI*2,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,160,0,Math.PI*1.5,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,40,0,Math.PI*2.0,true);
! ctx.fill();
};
※円弧2
基本図形を描画する 3 - 円弧や円を描く
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.beginPath();
! ctx.arc(320,240,200,0,Math.PI*2,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,160,0,Math.PI*1.5,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,40,0,Math.PI*2.0,true);
! ctx.fill();
};
※円弧3
基本図形を描画する 3 - 円弧や円を描く
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.beginPath();
! ctx.arc(320,240,200,0,Math.PI*2,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,160,0,Math.PI*1.5,false);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true);
! ctx.stroke();
! ctx.beginPath();
! ctx.arc(320,240,40,0,Math.PI*2.0,true);
! ctx.fill();
};
※円弧4
基本図形を描画する 3 - 円弧や円を描く
‣ 実行結果:円弧と円の組み合わせによる描画
基本図形を描画する 4 - 色の設定
基本図形を描画する 4 - 色の設定
‣ 色を図形に適用するためのプロパティは以下の3つ
‣ fillStyle ‒ 塗りの色
‣ strokeStyle ‒ 線の色
‣ globalAlpha ‒ 透明度
‣ 色は、CSSなどで使用する16進数によるRGB値で指定する
基本図形を描画する 4 - 色の設定
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.globalAlpha = 0.5;
! ctx.beginPath();
! ctx.fillStyle = '#3399FF';
! ctx.arc(260,240,160,0,Math.PI*2.0,true);
! ctx.fill();
! ctx.beginPath();
! ctx.fillStyle = '#FF9933';
! ctx.arc(400,240,160,0,Math.PI*2.0,true);
! ctx.fill();
};
基本図形を描画する 4 - 色の設定
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.globalAlpha = 0.5;
! ctx.beginPath();
! ctx.fillStyle = '#3399FF';
! ctx.arc(260,240,160,0,Math.PI*2.0,true);
! ctx.fill();
! ctx.beginPath();
! ctx.fillStyle = '#FF9933';
! ctx.arc(400,240,160,0,Math.PI*2.0,true);
! ctx.fill();
};
※全体の透明度の設定
基本図形を描画する 4 - 色の設定
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.globalAlpha = 0.5;
! ctx.beginPath();
! ctx.fillStyle = '#3399FF';
! ctx.arc(260,240,160,0,Math.PI*2.0,true);
! ctx.fill();
! ctx.beginPath();
! ctx.fillStyle = '#FF9933';
! ctx.arc(400,240,160,0,Math.PI*2.0,true);
! ctx.fill();
};
※円1
基本図形を描画する 4 - 色の設定
‣ canvasexample.js の draw()関数に追加
function draw(){
! var canvas = document.getElementById('example');
! if ( !canvas || !canvas.getContext ) {
! ! return false;
! }
! var ctx = canvas.getContext('2d');
! ctx.globalAlpha = 0.5;
! ctx.beginPath();
! ctx.fillStyle = '#3399FF';
! ctx.arc(260,240,160,0,Math.PI*2.0,true);
! ctx.fill();
! ctx.beginPath();
! ctx.fillStyle = '#FF9933';
! ctx.arc(400,240,160,0,Math.PI*2.0,true);
! ctx.fill();
};
※円2
基本図形を描画する 4 - 色の設定
‣ 実行結果:2色の半透明の円
まとめ
‣ 今日はここまで
‣ Canvasについて
‣ canvas要素の書式
‣ 描画のためのJavascriptのテンプレート
‣ 基本図形の描画
‣ 矩形
‣ 直線
‣ 円弧
‣ 色

More Related Content

What's hot

JavaScriptで『漫画カメラ』的画像加工
JavaScriptで『漫画カメラ』的画像加工JavaScriptで『漫画カメラ』的画像加工
JavaScriptで『漫画カメラ』的画像加工Masayuki Maekawa
 
これからのJavaScriptの話
これからのJavaScriptの話これからのJavaScriptの話
これからのJavaScriptの話Shogo Sensui
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門Yohta Kanke
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井Daisuke Imai
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるYutaro Miyazaki
 
Chart.jsで簡単にグラフを描画する
Chart.jsで簡単にグラフを描画するChart.jsで簡単にグラフを描画する
Chart.jsで簡単にグラフを描画するiPride Co., Ltd.
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Yutaro Miyazaki
 
introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)Ryuma Tsukano
 
HTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティHTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティNaoki Matsuda
 
SVG MANIAX Ver.2 - Mars vanilla
SVG MANIAX Ver.2 -  Mars vanillaSVG MANIAX Ver.2 -  Mars vanilla
SVG MANIAX Ver.2 - Mars vanillaNaoki Matsuda
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
Media Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するMedia Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するAtsushi Tadokoro
 
自動化ツール「Grunt.js」について
自動化ツール「Grunt.js」について自動化ツール「Grunt.js」について
自動化ツール「Grunt.js」についてSeiko Kuchida
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】Yasuhito Yabe
 
モテる JavaScript
モテる JavaScriptモテる JavaScript
モテる JavaScriptOsamu Monoe
 

What's hot (19)

JavaScriptで『漫画カメラ』的画像加工
JavaScriptで『漫画カメラ』的画像加工JavaScriptで『漫画カメラ』的画像加工
JavaScriptで『漫画カメラ』的画像加工
 
Aaなゲームをjsで
AaなゲームをjsでAaなゲームをjsで
Aaなゲームをjsで
 
これからのJavaScriptの話
これからのJavaScriptの話これからのJavaScriptの話
これからのJavaScriptの話
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
 
Arctic.js
Arctic.jsArctic.js
Arctic.js
 
React で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考えるReact で CSS カプセル化の可能性を考える
React で CSS カプセル化の可能性を考える
 
Chart.jsで簡単にグラフを描画する
Chart.jsで簡単にグラフを描画するChart.jsで簡単にグラフを描画する
Chart.jsで簡単にグラフを描画する
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
 
introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)
 
HTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティHTML5 と SVG で考える、これからの画像アクセシビリティ
HTML5 と SVG で考える、これからの画像アクセシビリティ
 
SVG MANIAX Ver.2 - Mars vanilla
SVG MANIAX Ver.2 -  Mars vanillaSVG MANIAX Ver.2 -  Mars vanilla
SVG MANIAX Ver.2 - Mars vanilla
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
Try Webworkers
Try WebworkersTry Webworkers
Try Webworkers
 
Media Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用するMedia Art II 2013 第5回:openFrameworks Addonを使用する
Media Art II 2013 第5回:openFrameworks Addonを使用する
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
自動化ツール「Grunt.js」について
自動化ツール「Grunt.js」について自動化ツール「Grunt.js」について
自動化ツール「Grunt.js」について
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
モテる JavaScript
モテる JavaScriptモテる JavaScript
モテる JavaScript
 

Similar to 情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く

Creators'night#13 tech#2今井
Creators'night#13 tech#2今井Creators'night#13 tech#2今井
Creators'night#13 tech#2今井Daisuke Imai
 
OpenCVの入り口
OpenCVの入り口OpenCVの入り口
OpenCVの入り口cct-inc
 
今さら始めるCoffeeScript
今さら始めるCoffeeScript今さら始めるCoffeeScript
今さら始めるCoffeeScriptAshitaba YOSHIOKA
 
静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3yaju88
 
PWAnight_20221019_クリエイティブコーディングとは?
PWAnight_20221019_クリエイティブコーディングとは?PWAnight_20221019_クリエイティブコーディングとは?
PWAnight_20221019_クリエイティブコーディングとは?reona396
 
情報編集(Web) HTML5 実践2 Processing.jsを使う
情報編集(Web) HTML5 実践2 Processing.jsを使う情報編集(Web) HTML5 実践2 Processing.jsを使う
情報編集(Web) HTML5 実践2 Processing.jsを使うAtsushi Tadokoro
 
⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3Nishida Kansuke
 
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムMedia Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムAtsushi Tadokoro
 
Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Toshiro Shimizu
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションAtsushi Tadokoro
 
OpenCVを用いた画像処理入門
OpenCVを用いた画像処理入門OpenCVを用いた画像処理入門
OpenCVを用いた画像処理入門uranishi
 
インラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみるインラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみるKohei Kadowaki
 
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFメディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFAtsushi Tadokoro
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和schoowebcampus
 
メディア芸術基礎 Ⅰ 第5回:CSSレイアウト
メディア芸術基礎 Ⅰ 第5回:CSSレイアウトメディア芸術基礎 Ⅰ 第5回:CSSレイアウト
メディア芸術基礎 Ⅰ 第5回:CSSレイアウトAtsushi Tadokoro
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めようAdvancedTechNight
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようHiroaki Wakamatsu
 

Similar to 情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く (20)

Creators'night#13 tech#2今井
Creators'night#13 tech#2今井Creators'night#13 tech#2今井
Creators'night#13 tech#2今井
 
Aaなゲームをjsで
AaなゲームをjsでAaなゲームをjsで
Aaなゲームをjsで
 
OpenCVの入り口
OpenCVの入り口OpenCVの入り口
OpenCVの入り口
 
今さら始めるCoffeeScript
今さら始めるCoffeeScript今さら始めるCoffeeScript
今さら始めるCoffeeScript
 
静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3
 
JavaFX 2.0 への誘い
JavaFX 2.0 への誘いJavaFX 2.0 への誘い
JavaFX 2.0 への誘い
 
PWAnight_20221019_クリエイティブコーディングとは?
PWAnight_20221019_クリエイティブコーディングとは?PWAnight_20221019_クリエイティブコーディングとは?
PWAnight_20221019_クリエイティブコーディングとは?
 
Tamabi media131118
Tamabi media131118Tamabi media131118
Tamabi media131118
 
情報編集(Web) HTML5 実践2 Processing.jsを使う
情報編集(Web) HTML5 実践2 Processing.jsを使う情報編集(Web) HTML5 実践2 Processing.jsを使う
情報編集(Web) HTML5 実践2 Processing.jsを使う
 
⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3⑰jQueryをおぼえよう!その3
⑰jQueryをおぼえよう!その3
 
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムMedia Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
 
Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II Processingによるアニメーション
 
OpenCVを用いた画像処理入門
OpenCVを用いた画像処理入門OpenCVを用いた画像処理入門
OpenCVを用いた画像処理入門
 
インラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみるインラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみる
 
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oFメディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
 
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
 
メディア芸術基礎 Ⅰ 第5回:CSSレイアウト
メディア芸術基礎 Ⅰ 第5回:CSSレイアウトメディア芸術基礎 Ⅰ 第5回:CSSレイアウト
メディア芸術基礎 Ⅰ 第5回:CSSレイアウト
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
 

More from Atsushi Tadokoro

「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望Atsushi Tadokoro
 
プログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようプログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようAtsushi Tadokoro
 
Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携 -2Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携 -2Atsushi Tadokoro
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2Atsushi Tadokoro
 
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Atsushi Tadokoro
 
Interactive Music II Processing基本
Interactive Music II Processing基本Interactive Music II Processing基本
Interactive Music II Processing基本Atsushi Tadokoro
 
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Atsushi Tadokoro
 
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス Atsushi Tadokoro
 
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)Atsushi Tadokoro
 
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描くiTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描くAtsushi Tadokoro
 
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリメディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリAtsushi Tadokoro
 
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使うAtsushi Tadokoro
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Atsushi Tadokoro
 
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得Atsushi Tadokoro
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1Atsushi Tadokoro
 
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画するiTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画するAtsushi Tadokoro
 
Media Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えMedia Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えAtsushi Tadokoro
 
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!Atsushi Tadokoro
 
Interactive Music II SuperCollider入門 5 時間構造をつくる
Interactive Music II SuperCollider入門 5  時間構造をつくるInteractive Music II SuperCollider入門 5  時間構造をつくる
Interactive Music II SuperCollider入門 5 時間構造をつくるAtsushi Tadokoro
 

More from Atsushi Tadokoro (20)

「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
「クリエイティブ・ミュージック・コーディング」- オーディオ・ビジュアル作品のための、オープンソースなソフトウエア・フレームワークの現状と展望
 
プログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめようプログラム初級講座 - メディア芸術をはじめよう
プログラム初級講座 - メディア芸術をはじめよう
 
Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携 -2Interactive Music II ProcessingとSuperColliderの連携 -2
Interactive Music II ProcessingとSuperColliderの連携 -2
 
coma Creators session vol.2
coma Creators session vol.2coma Creators session vol.2
coma Creators session vol.2
 
Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1Interactive Music II ProcessingとSuperColliderの連携1
Interactive Music II ProcessingとSuperColliderの連携1
 
Interactive Music II Processing基本
Interactive Music II Processing基本Interactive Music II Processing基本
Interactive Music II Processing基本
 
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
Interactive Music II SuperCollider応用 2 - SuperColliderとPure Dataの連携
 
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス Media Art II openFrameworks  アプリ間の通信とタンジブルなインターフェイス
Media Art II openFrameworks アプリ間の通信とタンジブルなインターフェイス
 
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
Interactive Music II SuperCollider応用 - SuperColliderと OSC (Open Sound Control)
 
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描くiTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
iTamabi 13 ARTSAT API 実践 5 - 衛星の軌道を描く
 
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリメディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
メディア芸術基礎 II 第11回:HTML5実践 表現のための様々なJavaScriptライブラリ
 
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う芸術情報演習デザイン(Web)  第8回: CSSフレームワークを使う
芸術情報演習デザイン(Web) 第8回: CSSフレームワークを使う
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
 
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
iTamabi 13 第9回:ARTSAT API 実践 3 ジオコーディングで衛星の位置を取得
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 1
 
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画するiTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
iTamabi 13 第8回:ARTSAT API 実践 2 衛星アプリを企画する
 
Media Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替えMedia Art II openFrameworks 複数のシーンの管理・切替え
Media Art II openFrameworks 複数のシーンの管理・切替え
 
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!Interactive Music II SuperCollider実習  オリジナルの楽器を作ろう!
Interactive Music II SuperCollider実習 オリジナルの楽器を作ろう!
 
Geidai music131107
Geidai music131107Geidai music131107
Geidai music131107
 
Interactive Music II SuperCollider入門 5 時間構造をつくる
Interactive Music II SuperCollider入門 5  時間構造をつくるInteractive Music II SuperCollider入門 5  時間構造をつくる
Interactive Music II SuperCollider入門 5 時間構造をつくる
 

情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く

  • 1. 情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く 2013年6月18日 東京藝術大学 芸術情報センター(AMC) 担当:田所淳
  • 2. 今日の内容 ‣ 前回のjQueryから、さらに一歩進んで、HTML5の世界へ ‣ HTML5のcanvas要素をつかってみる ‣ canvas要素:プラグインを使用せずに、ブラウザに直接、図 形やアニメーションを描くことができる ‣ canvasの準備 ‣ 簡単な図形を描く ‣ 色の設定 ‣ くりかえしを使って、たくさんの図形を描画する
  • 6. 図形やアニメーションを描くには? ‣ アニメーションや変化する図形を描くには? ‣ Flash Playerや、Java Appletなど外部プラグインを利用 プラグイン 外部プログラム Flashなど Webブラウザ
  • 8. Canvasとは ‣ anvas要素はスクリプト(一般的に JavaScript)を使って図形 を描くために使われる新しいHTML要素 ‣ 元々はMac OS X v10.4の内部でWebKitコンポーネントと してAppleが開発 ‣ HTML5で、新しい標準規格として標準化
  • 9. Canvasとは ‣ ブラウザの対応状況 ‣ Internet Explorer 9、Mozilla Firefox、Google Chrome、Safari、Operaなど全ての主要ブラウザの最新版 で実装済み ‣ IEの8以前のバージョンは未対応だが、サポートするための外 部ライブラリが開発されている ‣ ExplorerCanvas
  • 10. canvas要素の書式 ‣ canvas要素の書式自身は、img要素とよく似ている ‣ 例:幅400pix、高さ300pixのcanvas要素を追加する ‣ canvas要素のid属性: ‣ Javascriptなどのスクリプトで、どのcanvas要素に対して 処理を行うのかを特定する際に必要 ‣ anvas要素を使用する際には常にid属性を付けてユニークな (一意な)名称を指定する ‣ このサンプルの場合は「example」 <canvas id="example" width="400" height="300"></canvas>
  • 12. canvas要素の書式 ‣ まず、ベースとなるHTMLを用意する (index.html) ‣<!DOCTYPE html> <html> ! <head> ! ! <meta http-equiv="Content-Type" charset="utf-8" /> ! ! <title>Canvas Example</title> ! ! ! ! <script src="canvasexample.js"></script> ! ! ! ! <style type="text/css"> ! ! ! canvas { border: 1px solid #999; } ! ! </style> ! </head> ! <body> ! ! ! <canvas id="example" width="400" height="300"></canvas> ! ! </body> </html>
  • 13. canvas要素の書式 ‣ まず、ベースとなるHTMLを用意する (index.html) ‣<!DOCTYPE html> <html> ! <head> ! ! <meta http-equiv="Content-Type" charset="utf-8" /> ! ! <title>Canvas Example</title> ! ! ! ! <script src="canvasexample.js"></script> ! ! ! ! <style type="text/css"> ! ! ! canvas { border: 1px solid #999; } ! ! </style> ! </head> ! <body> ! ! ! <canvas id="example" width="400" height="300"></canvas> ! ! </body> </html> ※描画の命令を記述したJavaScript
  • 14. canvas要素の書式 ‣ まず、ベースとなるHTMLを用意する (index.html) ‣<!DOCTYPE html> <html> ! <head> ! ! <meta http-equiv="Content-Type" charset="utf-8" /> ! ! <title>Canvas Example</title> ! ! ! ! <script src="canvasexample.js"></script> ! ! ! ! <style type="text/css"> ! ! ! canvas { border: 1px solid #999; } ! ! </style> ! </head> ! <body> ! ! ! <canvas id="example" width="400" height="300"></canvas> ! ! </body> </html> ※CSSで、Canvas要素の周囲に枠線を描画
  • 15. canvas要素の書式 ‣ まず、ベースとなるHTMLを用意する (index.html) <!DOCTYPE html> <html> ! <head> ! ! <meta http-equiv="Content-Type" charset="utf-8" /> ! ! <title>Canvas Example</title> ! ! ! ! <script src="canvasexample.js"></script> ! ! ! ! <style type="text/css"> ! ! ! canvas { border: 1px solid #999; } ! ! </style> ! </head> ! <body> ! ! ! <canvas id="example" width="400" height="300"></canvas> ! ! </body> </html> ※表示のためのCanvas要素
  • 16. canvas要素の書式 ‣ Canvasに図形を描画するためのJavascirptテンプレート onload = function() { ! draw(); }; function draw(){ ! var canvas = document.getElementById('example'); ! ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! ! var ctx = canvas.getContext('2d'); ! };
  • 17. canvas要素の書式 ‣ Canvasに図形を描画するためのJavascirptテンプレート onload = function() { ! draw(); }; function draw(){ ! var canvas = document.getElementById('example'); ! ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! ! var ctx = canvas.getContext('2d'); ! }; ※ページの読込が完了したら、draw()を実行
  • 18. canvas要素の書式 ‣ Canvasに図形を描画するためのJavascirptテンプレート onload = function() { ! draw(); }; function draw(){ ! var canvas = document.getElementById('example'); ! ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! ! var ctx = canvas.getContext('2d'); ! }; ※id名( example )からcanvas要素を抽出し、 変数 canvas に格納
  • 19. canvas要素の書式 ‣ Canvasに図形を描画するためのJavascirptテンプレート onload = function() { ! draw(); }; function draw(){ ! var canvas = document.getElementById('example'); ! ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! ! var ctx = canvas.getContext('2d'); ! }; ※canvasに対応していないブラウザのための処理
  • 20. canvas要素の書式 ‣ Canvasに図形を描画するためのJavascirptテンプレート onload = function() { ! draw(); }; function draw(){ ! var canvas = document.getElementById('example'); ! ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! ! var ctx = canvas.getContext('2d'); ! }; ※2D図形描画のためのコンテキストを抽出し、 変数 ctx に格納
  • 23. 基本図形を描画する 1 - 矩形 ‣ 生成したcanvas要素の内部に、Javascriptを記述して簡単 な図形を描画してみる ‣ まずは、矩形(長方形)から ‣ canvasでは矩形を描くための3つの関数が用意されている ‣ fillRect(x,y,width,height) : 塗られた矩形を描く ‣ strokeRect(x,y,width,height) : 矩形の輪郭を描く ‣ clearRect(x,y,width,height) : 指定された領域を消去 ‣ 実際にやってみよう!!
  • 24. 基本図形を描画する 1 - 矩形 ‣ canvasexample.js に命令を追加 onload = function() { ! draw(); }; function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.fillRect(50,50,540,400); ! ctx.clearRect(80,80,400,300); ! ctx.strokeRect(240,20,200,300); };
  • 25. 基本図形を描画する 1 - 矩形 ‣ canvasexample.js に命令を追加 onload = function() { ! draw(); }; function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.fillRect(50,50,540,400); ! ctx.clearRect(80,80,400,300); ! ctx.strokeRect(240,20,200,300); }; ※追加した部分
  • 26. 基本図形を描画する 1 - 矩形 ‣ 実行結果:3種類の矩形を表示
  • 27. 基本図形を描画する 2 - パス(直線)を描く
  • 28. 基本図形を描画する 2 - パス(直線)を描く ‣ canvasでは、一つのまとまった図形を描けるのは矩形だけ ‣ 他の図形を描くには、複数のパス(線)を組み合わせて作る ‣ パスを使用して図形を描くための命令 ‣ beginPath() ‒ パスの開始 ‣ closePath() ‒ パスを閉じる ‣ stroke() ‒ 線でパスを描く ‣ fill() ‒ 塗り潰しでパスを描く ‣ moveTo(x, y) ‒ パスの始点を移動する ‣ やってみよう!!
  • 29. 基本図形を描画する 2 - パス(直線)を描く ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.moveTo(50,50); ! ctx.lineTo(500,400); ! ctx.lineTo(200,380); ! ctx.closePath(); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.moveTo(50,400); ! ctx.lineTo(300,20); ! ctx.lineTo(520,50); ! ctx.closePath(); ! ctx.fill(); };
  • 30. 基本図形を描画する 2 - パス(直線)を描く ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.moveTo(50,50); ! ctx.lineTo(500,400); ! ctx.lineTo(200,380); ! ctx.closePath(); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.moveTo(50,400); ! ctx.lineTo(300,20); ! ctx.lineTo(520,50); ! ctx.closePath(); ! ctx.fill(); }; ※輪郭線による描画
  • 31. 基本図形を描画する 2 - パス(直線)を描く ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.moveTo(50,50); ! ctx.lineTo(500,400); ! ctx.lineTo(200,380); ! ctx.closePath(); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.moveTo(50,400); ! ctx.lineTo(300,20); ! ctx.lineTo(520,50); ! ctx.closePath(); ! ctx.fill(); }; ※塗りつぶしによる描画
  • 32. 基本図形を描画する 2 - パス(直線)を描く ‣ 実行結果:直線の組み合わせによる図形
  • 33. 基本図形を描画する 3 - 円弧や円を描く
  • 34. 基本図形を描画する 3 - 円弧や円を描く ‣ 円弧や円を描くために arc メソッドを使う ‣ 基本的な書式は以下の通り ‣ x, y:円の中心座標 ‣ radius:半径 ‣ startAngle, endAngle:円弧の始まりと終点をラジアン角 で定義 (ラジアン:0∼2πで一周する角度の単位) ‣ anticlockwise:円弧を描く回転方向を指定 arc(x, y, radius, startAngle, endAngle, anticlockwise);
  • 35. 基本図形を描画する 3 - 円弧や円を描く ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.arc(320,240,200,0,Math.PI*2,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,160,0,Math.PI*1.5,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,40,0,Math.PI*2.0,true); ! ctx.fill(); };
  • 36. 基本図形を描画する 3 - 円弧や円を描く ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.arc(320,240,200,0,Math.PI*2,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,160,0,Math.PI*1.5,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,40,0,Math.PI*2.0,true); ! ctx.fill(); }; ※円弧1
  • 37. 基本図形を描画する 3 - 円弧や円を描く ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.arc(320,240,200,0,Math.PI*2,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,160,0,Math.PI*1.5,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,40,0,Math.PI*2.0,true); ! ctx.fill(); }; ※円弧2
  • 38. 基本図形を描画する 3 - 円弧や円を描く ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.arc(320,240,200,0,Math.PI*2,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,160,0,Math.PI*1.5,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,40,0,Math.PI*2.0,true); ! ctx.fill(); }; ※円弧3
  • 39. 基本図形を描画する 3 - 円弧や円を描く ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.beginPath(); ! ctx.arc(320,240,200,0,Math.PI*2,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,160,0,Math.PI*1.5,false); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,120,Math.PI*0.25,Math.PI*1.0,true); ! ctx.stroke(); ! ctx.beginPath(); ! ctx.arc(320,240,40,0,Math.PI*2.0,true); ! ctx.fill(); }; ※円弧4
  • 40. 基本図形を描画する 3 - 円弧や円を描く ‣ 実行結果:円弧と円の組み合わせによる描画
  • 42. 基本図形を描画する 4 - 色の設定 ‣ 色を図形に適用するためのプロパティは以下の3つ ‣ fillStyle ‒ 塗りの色 ‣ strokeStyle ‒ 線の色 ‣ globalAlpha ‒ 透明度 ‣ 色は、CSSなどで使用する16進数によるRGB値で指定する
  • 43. 基本図形を描画する 4 - 色の設定 ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.globalAlpha = 0.5; ! ctx.beginPath(); ! ctx.fillStyle = '#3399FF'; ! ctx.arc(260,240,160,0,Math.PI*2.0,true); ! ctx.fill(); ! ctx.beginPath(); ! ctx.fillStyle = '#FF9933'; ! ctx.arc(400,240,160,0,Math.PI*2.0,true); ! ctx.fill(); };
  • 44. 基本図形を描画する 4 - 色の設定 ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.globalAlpha = 0.5; ! ctx.beginPath(); ! ctx.fillStyle = '#3399FF'; ! ctx.arc(260,240,160,0,Math.PI*2.0,true); ! ctx.fill(); ! ctx.beginPath(); ! ctx.fillStyle = '#FF9933'; ! ctx.arc(400,240,160,0,Math.PI*2.0,true); ! ctx.fill(); }; ※全体の透明度の設定
  • 45. 基本図形を描画する 4 - 色の設定 ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.globalAlpha = 0.5; ! ctx.beginPath(); ! ctx.fillStyle = '#3399FF'; ! ctx.arc(260,240,160,0,Math.PI*2.0,true); ! ctx.fill(); ! ctx.beginPath(); ! ctx.fillStyle = '#FF9933'; ! ctx.arc(400,240,160,0,Math.PI*2.0,true); ! ctx.fill(); }; ※円1
  • 46. 基本図形を描画する 4 - 色の設定 ‣ canvasexample.js の draw()関数に追加 function draw(){ ! var canvas = document.getElementById('example'); ! if ( !canvas || !canvas.getContext ) { ! ! return false; ! } ! var ctx = canvas.getContext('2d'); ! ctx.globalAlpha = 0.5; ! ctx.beginPath(); ! ctx.fillStyle = '#3399FF'; ! ctx.arc(260,240,160,0,Math.PI*2.0,true); ! ctx.fill(); ! ctx.beginPath(); ! ctx.fillStyle = '#FF9933'; ! ctx.arc(400,240,160,0,Math.PI*2.0,true); ! ctx.fill(); }; ※円2
  • 47. 基本図形を描画する 4 - 色の設定 ‣ 実行結果:2色の半透明の円
  • 48. まとめ ‣ 今日はここまで ‣ Canvasについて ‣ canvas要素の書式 ‣ 描画のためのJavascriptのテンプレート ‣ 基本図形の描画 ‣ 矩形 ‣ 直線 ‣ 円弧 ‣ 色