ぬりぬりしたろか!
はい。背景色とかその辺の設定についてのお話です。
context.strokeStyle=ptn
線や輪郭の色を指定します。
こいつは値代入式なので注意してくださいね。
16進数カラーコードまたはRGB形式での指定ができます
var canvas1 = document.getElementById('canvas01'); canvas1.width = 200; canvas1.height = 200; if (canvas1.getContext) { var context1 = canvas1.getContext('2d'); // 新しいパスを開始する context1.beginPath(); context1.strokeStyle = '#dddddd'; // 四角の生成 context1.rect(30, 50, 70, 70); // 輪郭線の描画 context1.stroke(); // 新しいパスを開始する context1.beginPath(); context1.strokeStyle = '#ff0000'; context1.moveTo(10, 30); context1.lineTo(20, 70); // 輪郭線の描画 context1.stroke(); }
途中でbrginPathでリセットしない場合、四角部分も#ff0000が適用されますのでご注意ください。
context.fillStyle=ptb
塗りつぶしです。
今までの例でもいっぱい使ってきました。
16進数カラーコードまたはRGB形式での指定ができます
また、グラデーションパターンを設定することもできます。
グラデーションパターンに関しては後述してます。
var canvas2 = document.getElementById('canvas02'); canvas2.width = 200; canvas2.height = 200; if (canvas2.getContext) { var context2 = canvas2.getContext('2d'); // 新しいパスを開始する context2.beginPath(); // 四角の生成 context2.rect(70, 50, 70, 70); // 塗りつぶし背景色の設定 context2.fillStyle = '#ddd'; // 塗りつぶし context2.fill(); context2.beginPath(); // 四角の生成 context2.rect(20, 50, 70, 70); // 塗りつぶし背景色の設定 context2.fillStyle = '#333'; // 塗りつぶし context2.fill(); }
context.addColorStop(offset, color)
グラデーションの色を指定します。
offset
グラデーションの開始位置を指定します。
値jは0.0から1.0までの間。無効な値をセットするとJSエラーになりますので注意
要するに、始点0終点1なのです。
color
グラデーションの色指定を行います。
16進数またはRGB形式での指定をおこなってください。
無効な値はエラーとなりますので注意
複数の指定
offsetの値を変えてaddColorStopメソッドを実行させます。
注意点
このメソッドはあくまでもグラデーションパターンの作成用のメソッドとなります。
context.createLinearGradient(x0, y0, x1, y1)
線形グラデーションを指定します。
[x0 y0]は始点を[x1,y1]は終点を指します。
線形グラデーションの指定順について
以下の様な組み合わせで設定を行います。
- beginPath()でリセットをしましょう
- createLinearGradient()で線形グラデーションを使うと宣言し、その結果を別変数にほりこみます
- 2の変数を使ってaddColorStop()を必要なだけ実行してあげます
- 2の変数をcontext.fillStyleにぶち込んであげます。
- rect()で四角を描画し、fill()で背景をつければおわり
var canvas3 = document.getElementById('canvas03'); canvas3.width = 200; canvas3.height = 200; if (canvas3.getContext) { var context3 = canvas3.getContext('2d'); // 新しいパスを開始する context3.beginPath(); gradient = context3.createLinearGradient(20,20,70,70); gradient.addColorStop(0.0 , '#ddd'); gradient.addColorStop(1.0 , '#fff'); gradient.addColorStop(0.5 , 'rgb(0,255,0)'); context3.fillStyle = gradient; // 四角の生成 context3.rect(20,20,50,50); // 塗りつぶし context3.fill(); }
context.createRadialGradient(x0, y0, r0, x1, y1, r1)
円形グラデーションを指定します。
[x0, y0, r0]は始点、円の中心を指し、[x1, y1, r1]は終了地点を指します。
ちなみに円の中心と終了地点の数値は、最初の引数0,0で円の中心ではないのでご注意
- beginPath()でリセットをしましょう
- createRadialGradient()で線形グラデーションを使うと宣言し、その結果を別変数にほりこみます
- 2の変数を使ってaddColorStop()を必要なだけ実行してあげます
- 2の変数をcontext.fillStyleにぶち込んであげます。
- arc()で円を描画し、fill()で背景をつければおわり
var canvas4 = document.getElementById('canvas04'); canvas4.width = 200; canvas4.height = 200; if (canvas4.getContext) { var context4 = canvas4.getContext('2d'); // 新しいパスを開始する context4.beginPath(); gradient = context4.createRadialGradient(110,90,10,90,90,50); gradient.addColorStop(0.0 , '#fff'); gradient.addColorStop(0.2 , '#F7BFC1'); gradient.addColorStop(1.0 , '#F29DA4'); context4.fillStyle = gradient; // 四角の生成 var startAngle = 0 * Math.PI / 180; var endAngle = 360 * Math.PI / 180; context4.arc(70, 70, 50, startAngle, endAngle, true); // 塗りつぶし context4.fill(); }
context.createPattern(image, repetition)
背景画像のセットを行います。
image
imgのパスではなく、タグをぶっこむようです。
ちなみに指定できるのは <canvas><img><video>
の3つとなります。
repetition
cssの指定と同じです。
repeat
repeat-x
repeat-y
no-repeat
//------------------------------------- // 左側のcanvas //------------------------------------- var canvas5 = document.getElementById('canvas05'); canvas5.width = 200; canvas5.height = 200; if (canvas5.getContext) { var context5 = canvas5.getContext('2d'); // 新しいパスを開始する context5.beginPath(); var img = new Image(); img.src = "/common/img/illust/img_logo.jpg"; /* 画像が読み込まれるのを待ってから処理を続行 */ img.onload = function() { context5.beginPath(); /* パターンを生成 */ var ptn = context5.createPattern(img, ""); /* fillStyleにパターンをセット */ context5.fillStyle = ptn; /* 円を描く */ context5.arc(50, 50, 40, 0, 2 * Math.PI, false); context5.fill(); context5.stroke(); context5.beginPath(); /* パターンを生成 */ var ptn = context5.createPattern(img, ""); /* fillStyleにパターンをセット */ context5.fillStyle = ptn; /* 円を描く */ context5.rect(100,100,80,80); context5.fill(); context5.stroke(); } } //------------------------------------- // 右側のcanvas //------------------------------------- var canvas6 = document.getElementById('canvas06'); canvas6.width = 200; canvas6.height = 200; if (canvas6.getContext) { var context6 = canvas6.getContext('2d'); // 新しいパスを開始する context6.beginPath(); var img = new Image(); img.src = "/common/img/illust/img_logo.jpg"; /* 画像が読み込まれるのを待ってから処理を続行 */ img.onload = function() { context6.beginPath(); /* パターンを生成 */ var ptn = context6.createPattern(img, "no-repeat"); /* fillStyleにパターンをセット */ context6.fillStyle = ptn; /* 円を描く */ context6.rect(0,0,200,200); context6.fill(); context6.stroke(); } }