Canvas 2 Dベース
6272 ワード
Canvas 2 Dベース
Canvasとは
H 5の中で最も人気のある要素で、ページにエリアを描き、JSを利用してグラフィックを描き、最初はApple社が提案し、各ブラウザメーカーもそれをある程度実現した.canvasでは2 D contextと3 D context(WebGL)が規定されており、現在のブラウザのほとんどは2 D contextをサポートしている.WebGLの発展はまだ遅い.
きほんしよう
1、
2、原点はcanvas要素左上角3、2 D Contextに基づく2つの基本的な描画操作fill and stroke
Rectangles(長方形)
1、
2、
3、
Drawing Paths
1、文字盤を描く方法
2、座標点が描画経路上にあるか否かを判定する.isPointInPath(100, 100)//true
Drawing Text
1、fillText()、strokeText()後者は2、3つの属性font、textAlign、textBaseline 3、Demoをあまり使わない
4、measureText()の使用で文字サイズを測ることができる
Transformations
1.画像変換方法rotate(angle)scale(scaleX,scaleY)translate(x,y)transform(m 1_1,m 1_2,m 2_1,m 2_2,dx,dy)settTransform(m 1_1,m 1_2,m 2_2,dx,dy)
2.translateで原点の位置を再定義することができ、円を描く時、原点の位置を円心の位置に移動することができ、このように円を描く位置決めの過程で比較的に便利である
3.context.rotate注意座標軸を回転させる
Drawing Imagesピクチャの描画現在のcanvasdの座標(10,10)の位置から画像を挿入する(画像がcanvasに入れられない場合、画像は挿入できない) .指定領域内挿入--(10,10)から、幅90、高さ90の領域内で画像を描画する を実行する.画像上の指定領域の一部をcanvas中の指定領域(元の画像上の一部をcanvasに切り取ることに相当) に挿入する.注意、挿入された画像が別のドメイン名の下にある場合は、 とエラーが発生します.
shadowsにシャドウを付ける
DEMO:
Gradientsグラデーションリニアグラデーション 径項グラデーション
Patternsモードすなわち画像の繰返しモードであり、cssと同様に「repeat」、「repeat-x」、「repeat-y」、no-repeat」
Working with Image Dataイメージ元データ
フィルターの効果に使えます.詳しくはwww.html 5 rocksを参照してください.com/en/tutorials/canvas/imagefilters/
Componentositing合成
2つの画像の間にどのように絡み合っているのか、ここでは1つの例を挙げて、他の同じです.
まとめ canvasの内容は上記です.デザイナーが使える色のように多いですが、色、図形を組み合わせて、アイデアは本当に無限です.canvasもそうです. webGLはOpenGL ES 2.0ブラウザに対してインタフェースを実現し、3 D絵画に用いられ、生産段階は使用しないほうがよく、実験段階に用いることができる.
Canvasとは
H 5の中で最も人気のある要素で、ページにエリアを描き、JSを利用してグラフィックを描き、最初はApple社が提案し、各ブラウザメーカーもそれをある程度実現した.canvasでは2 D contextと3 D context(WebGL)が規定されており、現在のブラウザのほとんどは2 D contextをサポートしている.WebGLの発展はまだ遅い.
きほんしよう
1、
toDataURL()
描いた画像を画像として出力//get data URI of the image
var imgURI = drawing.toDataURL("image/png");
//display the image
var image = document.createElement("img");
image.src = imgURI;
document.body.appendChild(image);
2、原点はcanvas要素左上角3、2 D Contextに基づく2つの基本的な描画操作fill and stroke
Rectangles(長方形)
1、
fillRect()
context.fillRect(10, 10, 50, 50);
//draw a blue rectangle that’s semi-transparent
context.fillStyle = "rgba(0,0,255,0.5)";
context.fillRect(30, 30, 50, 50);
2、
strokeRect()
//draw a red outlined rectangle
context.strokeStyle = "#ff0000";
context.strokeRect(10, 10, 50, 50);
//draw a blue outlined rectangle that’s semi-transparent
context.strokeStyle = "rgba(0,0,255,0.5)";
context.strokeRect(30, 30, 50, 50);
3、
clearRect()
//draw a red rectangle
context.fillStyle = "#ff0000";
context.fillRect(10, 10, 50, 50);
//draw a blue rectangle that’s semi-transparent
context.fillStyle = "rgba(0,0,255,0.5)";
context.fillRect(30, 30, 50, 50);
//clear a rectangle that overlaps both of the previous rectangles
context.clearRect(40, 40, 10, 10);
Drawing Paths
1、文字盤を描く方法
var drawing = document.getElementById("drawing");
//make sure
2、座標点が描画経路上にあるか否かを判定する.isPointInPath(100, 100)//true
Drawing Text
1、fillText()、strokeText()後者は2、3つの属性font、textAlign、textBaseline 3、Demoをあまり使わない
context.font = "bold 14px Arial";
context.textAlign = "center";
context.textBaseline = "middle";
context.fillText("12", 100, 20);
//start-aligned
context.textAlign = "start";
context.fillText("12", 100, 40);
//end-aligned
context.textAlign = "end";
context.fillText("12", 100, 60);
4、measureText()の使用で文字サイズを測ることができる
// 140,
var fontSize = 100;
context.font = fontSize + "px Arial";
while(context.measureText("Hello world!").width > 140) {
fontSize--;
context.font = fontSize + "px Arial";
}
context.fillText("Hello world!", 10, 10);
context.fillText("Font size is " + fontSize + "px", 10, 50);
Transformations
1.画像変換方法rotate(angle)scale(scaleX,scaleY)translate(x,y)transform(m 1_1,m 1_2,m 2_1,m 2_2,dx,dy)settTransform(m 1_1,m 1_2,m 2_2,dx,dy)
2.translateで原点の位置を再定義することができ、円を描く時、原点の位置を円心の位置に移動することができ、このように円を描く位置決めの過程で比較的に便利である
3.context.rotate注意座標軸を回転させる
Drawing Imagesピクチャの描画
var image = document.images[0];
context.drawImage(image, 10, 10);
context.drawImage(image, 10, 10,90,90)
// (0,10) , 150, 385 canvas (0,100) , 40, 60
context.drawImage(image, 0, 10, 150, 385, 0, 100, 40, 60);
shadowsにシャドウを付ける
DEMO:
var drawing = document.getElementById("drawing");
var context = drawing.getContext("2d");
context.shadowOffsetX = 5;
context.shadowOffsetY = 5;
context.shadowBlur = 4;
context.shadowColor = "rgba(0, 0, 0, 0.5)";
//draw a red rectangle
context.fillStyle = "#ff0000";
context.fillRect(10, 10, 50, 50);
//draw a blue rectangle
context.fillStyle = "rgba(0,0,255,1)";
context.fillRect(30, 30, 50, 50);
Gradientsグラデーション
var gradient = context.createLinearGradient(30, 30, 80, 80);
gradient.addColorStop(0, "white");
gradient.addColorStop(1, "black");
context.fillStyle = gradient;
context.fillRect(30, 30, 50, 50);
var gradient = context.createRadialGradient(55, 55, 10, 55, 55, 30);
gradient.addColorStop(0, "white");
gradient.addColorStop(1, "black");
context.fillStyle = gradient;
context.fillRect(30, 30, 50, 50);
Patternsモード
var context = drawing.getContext("2d");
var image = document.images[0],
pattern = context.createPattern(image, "repeat");
//draw a rectangle
context.fillStyle = pattern; // repeat (0,0)
context.fillRect(30, 0, 150, 150); // , repeat , repeat ,
Working with Image Dataイメージ元データ
フィルターの効果に使えます.詳しくはwww.html 5 rocksを参照してください.com/en/tutorials/canvas/imagefilters/
Componentositing合成
2つの画像の間にどのように絡み合っているのか、ここでは1つの例を挙げて、他の同じです.
var drawing = document.getElementById("drawing");
var context = drawing.getContext("2d");
//draw a red rectangle
context.fillStyle = "#ff0000";
context.fillRect(10, 10, 50, 50);
//change the global alpha
context.globalCompositeOperation = "xor";
//draw a blue rectangle
context.fillStyle = "rgba(0,0,255,1)";
context.fillRect(30, 30, 50, 50);
まとめ