Canvas入門01
Canvas図形描画の基礎
HTML5の
JavaScript
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 2
HTMLとHTML5の違い
従来のHTMLの内容
HTML5の内容
要素(タグ) JavaScript
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 3
h1,canvas,video
など
canvas描画,データ保
存, 端末傾き,video制御
要素(タグ)
h1, body, pなど
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 4
Canvasについて
canvasとは
• HTML5で、新しい規格として標準化され、直接ブラウザ
に図形描画やアニメーションができる
• 幅広い表現が出来るため、アプリ制作に必須かつ主要の
技術である
• HTMLのcanvas要素に対して、JavaScriptで描画する
– 他のHTMLやCSSを使わず、JSのみで描画を行う
• IE9以降、Firefox、Google Chrome、Safari、Operaな
ど全ての主要ブラウザで実装済み
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 5
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 6
今回の講義内容
• Canvasの基礎を学習する
– 描画機能の確認
• 四角形、円形、文字などの図形を描画する
– 描画機能とJS制御文の活用
• for文やランダムなど、JSの構文と組み合わせて利
用する
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 7
まずは、じっくり
canvasの基礎を学習しよう
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 8
canvas要素の書式
• img要素とよく似ている
• id属性の値をJavaScriptで特定して、
コンテキストを作成してコントロールする
<canvas id="example" width="400" height="300"></canvas>
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 9
セレクタの指定方法
• 現時点ではjQueryを使わずに行う
– jQueryの外部JSファイルを読み込む分だけ、
若干初期動作が遅くなる。
– jQueryを多用しないのであれば、使用しない
方が良い。
• JavaScriptによるセレクタ指定方法
– JavaScriptでは、このセレクタ指定がキモ!!
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 10
JavaScriptによるセレクタ指定
• idによるHTML要素の指定
• Canvas描画用コンテキストの生成
var オブジェクト = document.getElementById('id')
var ctx = オブジェクト.getContext('2d');
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 11
canvas要素の書式
• 実際にcanvas要素を記述しよう。
– 分かりやすいように、CSSでCanvas要素に
borderを指定
図形を
描画しよう
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 12
矩形
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 13
canvas要素に矩形を描画
• 矩形
– 塗られた矩形を描く
コンテキスト. fillRect(x, y, width, height)
– 矩形の輪郭を描く
コンテキスト. strokeRect(x, y, width, height)
– 指定された領域を消去
コンテキスト. clearRect(x, y, width, height)
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 14
canvas要素に矩形を描画
0
Canvas要素
Y
X
(20px, 10px)
ctx.fillRect(20, 10, 150, 100)
150px
100px
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 15
直線
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 16
• 直線(パス)
– パスの開始
コンテキスト. beginPath()
– パスの始点を指定する
コンテキスト. moveTo(x, y)
– パスの次点を指定する
コンテキスト. lineTo(x, y)
– パスを閉じる
コンテキスト. closePath()
– 線でパスを描く
コンテキスト. stroke()
– 塗り潰しでパスを描く
コンテキスト. fill()
– 線の太さ
コンテキスト. lineWidth
canvas要素に直線を描画
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 17
canvas要素に直線を描画
0
Canvas要素
Y
X
(20px, 10px)
ctx.beginPath();
ctx.moveTo(20,10);
ctx.lineTo(60,30);
ctx.lineTo(40,80);
ctx.closePath();
ctx.stroke();
(60px, 30px)
(40px, 80px)
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 18
円
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 19
• 円や円弧
– x, y:円の中心座標
– radius:半径
– startAngle, endAngle:円弧の始点と終点をラジアン
角で定義 (ラジアン:0~2πで一周する角度の単位)
– anticlockwise:円弧を描く回転方向を指定
左回り true、右回り false
コンテキスト. arc(x, y, radius, startAngle, endAngle, anticlockwise);
canvas要素に円形を描画
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 20
ラジアン = π × 度 ÷ 180
ラジアン
• 角度について
– canvasで使用する角度は、一般的な「度」で
はなく、ラジアン(radian)を利用します。
– 度とラジアンの関係は以下の通り
• 90度 = 0.5πラジアン
• 180度 = πラジアン
• 360度 = 2πラジアン
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 21
canvas要素に直線を描画
0
Canvas要素
Y
X
ctx.beginPath();
ctx.arc(100,100,160,0,Math.PI*1.5,false);
ctx.stroke();
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 22
色
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 23
• 色
– 色を図形に適用するためのプロパティ
• 塗りの色
コンテキスト. fillStyle
• 線の色
コンテキスト. strokeStyle
– 色は、16進数や10進数によるRGB値で指定する
• #ffffff
• rgb(255,255,255)
• rgba(255,255,255,1)
canvas要素に図形を描画しよう
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 24
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 25
記述ミスの確認
• Google Chromeで確認ができる
– [要素を検証] → [Console] で、エラーの確認
ができるので、使い慣れてください。
– 正しく動かない場合には、まず上記操作を行
なってください。
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 26
画像
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 27
• 画像読み込み
– Imageオブジェクトの作成
var オブジェクト名 = new Image();
– 画像ファイルアドレスを指定
オブジェクト名.src = ファイルパス
– 画像の表示
コンテキスト. drawImage(オブジェクト名, 横位置, 縦位置)
コンテキスト. drawImage(オブジェクト名, 横位置, 縦位置, 幅, 高さ)
canvas要素に画像を読み込もう
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 28
画像読み込みの基本的な書式
• 画像読み込みが完了してから実行
var img = new Image();
img.src = ‘ファイルパス’;
img.onload = function(){
コンテキスト.drawImage(img,100,100);
}
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 29
文字
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 30
• 文字表示
– フォント指定
コンテキスト. font = ‘スタイル サイズ ファミリー名’;
記述例:‘bold 20px sans-serif’
– 文字の縁線を描画
コンテキスト. strokeText( 文字, 横位置, 縦位置);
– 文字の塗りつぶし
コンテキスト. fillText( 文字, 横位置, 縦位置);
canvas要素に文字を表示しよう
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 31
JS制御文との
組み合わせ
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 32
線を繰り返し描画してみよう
• 水平線を3本、まずは人力で書いてみよう
moveTo(10,10) lineTo(300,10)
moveTo(10,30)
moveTo(10,50)
lineTo(300,30)
lineTo(300,50)
20px
20px
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 33
線を繰り返し描画してみよう
• この水平線を100本、1万本をこの方法で
描画するのは大変です。
• ここでfor文で、描画動作を繰り返して
線を30本描画してみよう。
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 34
for文の確認
• for文とは
– 特定の回数、繰り返し処理することができる
for( 変数初期化; 繰り返し条件; 変数の増減式) {
繰り返したい処理;
}
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 35
for文の確認
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 36
for文の確認
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 37
色をランダム
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 38
for文とランダム
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 39
ランダムを
学習
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 40
Mathオブジェクト
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 41
Mathオブジェクトとは
• 数学(mathematics)的な高度な演算を行う
ことができる。
• 使用方法
– Math.メソッド()
– Math.プロパティ
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 42
• ランダムを学習しよう
– ランダムを扱うのは、JavaScriptの基本です
• JavaScriptのランダムとは
– 不規則な数値を作成する
• 例:くじ引き、自然現象、物体の配置、広告などの表示
学習内容
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 43
ランダム
• まずは、ランダムの内容を確認しましょう。
– ランダムな値を作成
Math.random();
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 44
変数などの値の確認
• デバッグ手法
console.log(変数);
• Google Chromeで確認ができる
– Consoleでは、エラーの確認もできるので、
使い慣れてください。
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 45
ランダム
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 46
ランダム
• Math.random()
0 以上 1 未満の範囲で疑似乱数を生成
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 47
ランダム
• ランダム数値に100をかける
Math.random()*100;
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 48
ランダム
• ランダム数値に100をかけ小数以下を削除
Math.floor(Math.random()*100);
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 49
ランダムの基本
• 自分で必要な数値の範囲を作り出すこと
– 使用する命令は、主に
Math.random()
Math.floor()
となります。
あとは + * ー / を使って必要な「数値範囲」を作
ることが唯一のポイントです。
つまり、プログラミングというよりは、計算力が必
要となります。
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 50
主なMathオブジェクトの確認
• JavaScriptのリファレンスはブラウザベン
ダーが用意しているので確認すること
– MSDN(IE)
– MDN(Firefox)
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 51
数値を整数に丸める
• 数値を整数にする方法
– Math.floor(数値)
• 引数として与えた数以下の最大の整数を生成→小数点以下切り
捨てのような感じ(マイナス値に注意)
– Math.round(数値)
• 引数として与えた数を四捨五入
– Math.ceil(数値)
• 引数として与えた数以上の最小の整数を生成→小数点以下繰り
上げのような感じ(マイナス値に注意)
– parseInt(数値)
• 小数点以下切り捨て、または文字列を数値に変換などに利用
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 52
数値を整数に丸める
• 数値を整数にする方法(特殊例)
– JavaScriptはシフト演算子やビット演算子を使用する
とき整数に対して行う、という特性を活かした方法
– 数値>>0
• シスト演算子を用いた方法
• 右へ0ビットシフトするので、そのままの数値が返されるが、
整数に対してのみ実行されるので、小数が切り捨てられる
– 数値|0
• ビット演算子を用いた方法
• ORを用いるとそのままの数値が返されるが、整数に対しての
み実行されるので、小数が切り捨てられる
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 53
数値の範囲を作るとは
• ランダムを使ったサイコロを作ってみよう
– サイコロは、1・2・3・4・5・6 なので、
1~6までのランダムな数値範囲を作成する
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 54
for文とランダム
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 55
for文とランダム
Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 56
次回まで課題(宿題)
• 矩形(30px × 30px)を縦・横に10px間隔に10個ずつ並べてみよう
• 色はランダムで設定しよう。
• 可能であれば、サイズ変更などのアレンジを追加してみよう。
10px
10個
10個

More Related Content

PDF
Canvasでペイントアプリ作成
PDF
Canvasによるデジタル時計制作入門
PDF
canvasによるアナログ時計の作成
PDF
静岡Developers勉強会 HTML5&CSS3
PDF
Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-
PDF
JavaScriptによるgoogle maps apiの使い方
PDF
HTML5 Local Storageを利用したメモ帳アプリ
PDF
JavaScriptによるvideo audio要素のコントロール入門
Canvasでペイントアプリ作成
Canvasによるデジタル時計制作入門
canvasによるアナログ時計の作成
静岡Developers勉強会 HTML5&CSS3
Javascript入門-デジタル時計を作りながらJavaScriptを学ぼう-
JavaScriptによるgoogle maps apiの使い方
HTML5 Local Storageを利用したメモ帳アプリ
JavaScriptによるvideo audio要素のコントロール入門

Similar to Canvas入門01-図形描画とJS活用- (20)

PDF
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
PDF
メディア芸術基礎 II Canvas + Javascriptで図形を描く
KEY
JavaScript Hackathon for Students
PDF
第四回 JavaScriptから始めるプログラミング2016
ODP
20130202 fe勉強会 canvas
PDF
Canvas勉強会
KEY
iOSプログラマへ。HTML5 Canvasがおもしろい!
PDF
JavaScript Basic 01
PDF
JavaScriptのオブジェクト:Mathオブジェクト、Dateオブジェクト
PDF
20110903 gunmaweb#6 pavone
PDF
p5.js 授業テキスト
PDF
JavaScript/CSS 2015 Autumn
PDF
LT Canvasを用いた開発について 〜canvasでアイキャッチを作る〜
KEY
Html5勉強会資料 2012821
PDF
第十回ネットワークチーム講座資料
KEY
HTML5でスマートフォン開発の理想と現実
PDF
Processing.jsでおうちハック
KEY
HTML5で作るスマホブラウザゲーム
PDF
Web勉強会(HTML+CSS+JS入門の入門)
PDF
HTML5 Canvasを学びたい人に送る Canvasの超基本とその後の学習方針
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
メディア芸術基礎 II Canvas + Javascriptで図形を描く
JavaScript Hackathon for Students
第四回 JavaScriptから始めるプログラミング2016
20130202 fe勉強会 canvas
Canvas勉強会
iOSプログラマへ。HTML5 Canvasがおもしろい!
JavaScript Basic 01
JavaScriptのオブジェクト:Mathオブジェクト、Dateオブジェクト
20110903 gunmaweb#6 pavone
p5.js 授業テキスト
JavaScript/CSS 2015 Autumn
LT Canvasを用いた開発について 〜canvasでアイキャッチを作る〜
Html5勉強会資料 2012821
第十回ネットワークチーム講座資料
HTML5でスマートフォン開発の理想と現実
Processing.jsでおうちハック
HTML5で作るスマホブラウザゲーム
Web勉強会(HTML+CSS+JS入門の入門)
HTML5 Canvasを学びたい人に送る Canvasの超基本とその後の学習方針
Ad

More from Yossy Taka (14)

PDF
WebサイトへのYotutube動画の設置
PDF
Bracketsを使おう
PDF
スマホアプリ開発-プロモーション・集客・サポート・広告収入-
PDF
Ajax非同期通信によるサーバー通信
PDF
JavaScript 基礎文法のまとめ
PDF
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
PDF
Webの仕組みとプログラミング言語
PDF
WebデザイナのためのjQuery入門。
PDF
Emmetの使い方
PDF
JavaScript04 jquery プラグインを使おう
PDF
JavaScript basic, jQuery animation
PDF
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
PDF
JavaScript Basic 02 jQuery
PDF
Webデザイン入門1-HTML5・CSSについて-
WebサイトへのYotutube動画の設置
Bracketsを使おう
スマホアプリ開発-プロモーション・集客・サポート・広告収入-
Ajax非同期通信によるサーバー通信
JavaScript 基礎文法のまとめ
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
Webの仕組みとプログラミング言語
WebデザイナのためのjQuery入門。
Emmetの使い方
JavaScript04 jquery プラグインを使おう
JavaScript basic, jQuery animation
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
JavaScript Basic 02 jQuery
Webデザイン入門1-HTML5・CSSについて-
Ad

Recently uploaded (12)

PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PPTX
Vibe Codingを触って感じた現実について.pptx .
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Vibe Codingを触って感じた現実について.pptx .
20250823_IoTLT_vol126_kitazaki_v1___.pdf
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
Working as an OSS Developer at Ruby Association Activity Report 2025
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...

Canvas入門01-図形描画とJS活用-

  • 2. HTML5の JavaScript Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 2
  • 3. HTMLとHTML5の違い 従来のHTMLの内容 HTML5の内容 要素(タグ) JavaScript Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 3 h1,canvas,video など canvas描画,データ保 存, 端末傾き,video制御 要素(タグ) h1, body, pなど
  • 4. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 4 Canvasについて
  • 5. canvasとは • HTML5で、新しい規格として標準化され、直接ブラウザ に図形描画やアニメーションができる • 幅広い表現が出来るため、アプリ制作に必須かつ主要の 技術である • HTMLのcanvas要素に対して、JavaScriptで描画する – 他のHTMLやCSSを使わず、JSのみで描画を行う • IE9以降、Firefox、Google Chrome、Safari、Operaな ど全ての主要ブラウザで実装済み Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 5
  • 6. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 6 今回の講義内容 • Canvasの基礎を学習する – 描画機能の確認 • 四角形、円形、文字などの図形を描画する – 描画機能とJS制御文の活用 • for文やランダムなど、JSの構文と組み合わせて利 用する
  • 7. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 7 まずは、じっくり canvasの基礎を学習しよう
  • 8. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 8 canvas要素の書式 • img要素とよく似ている • id属性の値をJavaScriptで特定して、 コンテキストを作成してコントロールする <canvas id="example" width="400" height="300"></canvas>
  • 9. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 9 セレクタの指定方法 • 現時点ではjQueryを使わずに行う – jQueryの外部JSファイルを読み込む分だけ、 若干初期動作が遅くなる。 – jQueryを多用しないのであれば、使用しない 方が良い。 • JavaScriptによるセレクタ指定方法 – JavaScriptでは、このセレクタ指定がキモ!!
  • 10. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 10 JavaScriptによるセレクタ指定 • idによるHTML要素の指定 • Canvas描画用コンテキストの生成 var オブジェクト = document.getElementById('id') var ctx = オブジェクト.getContext('2d');
  • 11. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 11 canvas要素の書式 • 実際にcanvas要素を記述しよう。 – 分かりやすいように、CSSでCanvas要素に borderを指定
  • 12. 図形を 描画しよう Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 12
  • 13. 矩形 Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 13
  • 14. canvas要素に矩形を描画 • 矩形 – 塗られた矩形を描く コンテキスト. fillRect(x, y, width, height) – 矩形の輪郭を描く コンテキスト. strokeRect(x, y, width, height) – 指定された領域を消去 コンテキスト. clearRect(x, y, width, height) Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 14
  • 15. canvas要素に矩形を描画 0 Canvas要素 Y X (20px, 10px) ctx.fillRect(20, 10, 150, 100) 150px 100px Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 15
  • 16. 直線 Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 16
  • 17. • 直線(パス) – パスの開始 コンテキスト. beginPath() – パスの始点を指定する コンテキスト. moveTo(x, y) – パスの次点を指定する コンテキスト. lineTo(x, y) – パスを閉じる コンテキスト. closePath() – 線でパスを描く コンテキスト. stroke() – 塗り潰しでパスを描く コンテキスト. fill() – 線の太さ コンテキスト. lineWidth canvas要素に直線を描画 Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 17
  • 19. 円 Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 19
  • 20. • 円や円弧 – x, y:円の中心座標 – radius:半径 – startAngle, endAngle:円弧の始点と終点をラジアン 角で定義 (ラジアン:0~2πで一周する角度の単位) – anticlockwise:円弧を描く回転方向を指定 左回り true、右回り false コンテキスト. arc(x, y, radius, startAngle, endAngle, anticlockwise); canvas要素に円形を描画 Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 20
  • 21. ラジアン = π × 度 ÷ 180 ラジアン • 角度について – canvasで使用する角度は、一般的な「度」で はなく、ラジアン(radian)を利用します。 – 度とラジアンの関係は以下の通り • 90度 = 0.5πラジアン • 180度 = πラジアン • 360度 = 2πラジアン Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 21
  • 23. 色 Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 23
  • 24. • 色 – 色を図形に適用するためのプロパティ • 塗りの色 コンテキスト. fillStyle • 線の色 コンテキスト. strokeStyle – 色は、16進数や10進数によるRGB値で指定する • #ffffff • rgb(255,255,255) • rgba(255,255,255,1) canvas要素に図形を描画しよう Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 24
  • 25. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 25 記述ミスの確認 • Google Chromeで確認ができる – [要素を検証] → [Console] で、エラーの確認 ができるので、使い慣れてください。 – 正しく動かない場合には、まず上記操作を行 なってください。
  • 26. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 26 画像
  • 27. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 27 • 画像読み込み – Imageオブジェクトの作成 var オブジェクト名 = new Image(); – 画像ファイルアドレスを指定 オブジェクト名.src = ファイルパス – 画像の表示 コンテキスト. drawImage(オブジェクト名, 横位置, 縦位置) コンテキスト. drawImage(オブジェクト名, 横位置, 縦位置, 幅, 高さ) canvas要素に画像を読み込もう
  • 28. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 28 画像読み込みの基本的な書式 • 画像読み込みが完了してから実行 var img = new Image(); img.src = ‘ファイルパス’; img.onload = function(){ コンテキスト.drawImage(img,100,100); }
  • 29. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 29 文字
  • 30. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 30 • 文字表示 – フォント指定 コンテキスト. font = ‘スタイル サイズ ファミリー名’; 記述例:‘bold 20px sans-serif’ – 文字の縁線を描画 コンテキスト. strokeText( 文字, 横位置, 縦位置); – 文字の塗りつぶし コンテキスト. fillText( 文字, 横位置, 縦位置); canvas要素に文字を表示しよう
  • 31. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 31 JS制御文との 組み合わせ
  • 32. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 32 線を繰り返し描画してみよう • 水平線を3本、まずは人力で書いてみよう moveTo(10,10) lineTo(300,10) moveTo(10,30) moveTo(10,50) lineTo(300,30) lineTo(300,50) 20px 20px
  • 33. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 33 線を繰り返し描画してみよう • この水平線を100本、1万本をこの方法で 描画するのは大変です。 • ここでfor文で、描画動作を繰り返して 線を30本描画してみよう。
  • 34. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 34 for文の確認 • for文とは – 特定の回数、繰り返し処理することができる for( 変数初期化; 繰り返し条件; 変数の増減式) { 繰り返したい処理; }
  • 35. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 35 for文の確認
  • 36. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 36 for文の確認
  • 37. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 37 色をランダム
  • 38. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 38 for文とランダム
  • 39. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 39 ランダムを 学習
  • 40. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 40 Mathオブジェクト
  • 41. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 41 Mathオブジェクトとは • 数学(mathematics)的な高度な演算を行う ことができる。 • 使用方法 – Math.メソッド() – Math.プロパティ
  • 42. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 42 • ランダムを学習しよう – ランダムを扱うのは、JavaScriptの基本です • JavaScriptのランダムとは – 不規則な数値を作成する • 例:くじ引き、自然現象、物体の配置、広告などの表示 学習内容
  • 43. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 43 ランダム • まずは、ランダムの内容を確認しましょう。 – ランダムな値を作成 Math.random();
  • 44. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 44 変数などの値の確認 • デバッグ手法 console.log(変数); • Google Chromeで確認ができる – Consoleでは、エラーの確認もできるので、 使い慣れてください。
  • 45. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 45 ランダム
  • 46. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 46 ランダム • Math.random() 0 以上 1 未満の範囲で疑似乱数を生成
  • 47. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 47 ランダム • ランダム数値に100をかける Math.random()*100;
  • 48. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 48 ランダム • ランダム数値に100をかけ小数以下を削除 Math.floor(Math.random()*100);
  • 49. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 49 ランダムの基本 • 自分で必要な数値の範囲を作り出すこと – 使用する命令は、主に Math.random() Math.floor() となります。 あとは + * ー / を使って必要な「数値範囲」を作 ることが唯一のポイントです。 つまり、プログラミングというよりは、計算力が必 要となります。
  • 50. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 50 主なMathオブジェクトの確認 • JavaScriptのリファレンスはブラウザベン ダーが用意しているので確認すること – MSDN(IE) – MDN(Firefox)
  • 51. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 51 数値を整数に丸める • 数値を整数にする方法 – Math.floor(数値) • 引数として与えた数以下の最大の整数を生成→小数点以下切り 捨てのような感じ(マイナス値に注意) – Math.round(数値) • 引数として与えた数を四捨五入 – Math.ceil(数値) • 引数として与えた数以上の最小の整数を生成→小数点以下繰り 上げのような感じ(マイナス値に注意) – parseInt(数値) • 小数点以下切り捨て、または文字列を数値に変換などに利用
  • 52. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 52 数値を整数に丸める • 数値を整数にする方法(特殊例) – JavaScriptはシフト演算子やビット演算子を使用する とき整数に対して行う、という特性を活かした方法 – 数値>>0 • シスト演算子を用いた方法 • 右へ0ビットシフトするので、そのままの数値が返されるが、 整数に対してのみ実行されるので、小数が切り捨てられる – 数値|0 • ビット演算子を用いた方法 • ORを用いるとそのままの数値が返されるが、整数に対しての み実行されるので、小数が切り捨てられる
  • 53. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 53 数値の範囲を作るとは • ランダムを使ったサイコロを作ってみよう – サイコロは、1・2・3・4・5・6 なので、 1~6までのランダムな数値範囲を作成する
  • 54. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 54 for文とランダム
  • 55. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 55 for文とランダム
  • 56. Copyright Ⓒ 2015 Yoshihiro Takahashi All Rights Reserved. 56 次回まで課題(宿題) • 矩形(30px × 30px)を縦・横に10px間隔に10個ずつ並べてみよう • 色はランダムで設定しよう。 • 可能であれば、サイズ変更などのアレンジを追加してみよう。 10px 10個 10個