HTML5火的正熱,最近有個想法也是要用到HTML的相關功能,所以也要好好學習一把。
好好看了一下Canvas的功能,感覺HTML5在客戶端互動的功能性越來越強了,今天看了一下Canvas繪圖,下邊是幾個實例,記下以備後用。
1、使用Canvas繪製直線:
XML/HTML Code複製內容到剪貼簿
- html>
-
html>
-
頭>
-
元 元 字元 字元8"
- >
頭
- > 樣式 類型>
-
畫布{border:dashed 2px #CCC} -
樣式>
-
腳本 類型 類型 型
- >
-
函數 $$(id){
-
return document.getElementById(id);
-
}
-
函數 pageLoad(){
var
- 可 = $$('can'); 可以 = $$('can'); 鎠 var
可-
罐子可以
- 罐子
cans.moveTo(20,30);//第一個起點 -
cans.lineTo(120,90);//第二點 -
cans.lineTo(220,60);//第三點(以第二點為起點)
cans.lineWidth
= cans.行程樣式 = '
罐頭.中風();
- }
-
スクリプト>
-
<body onload="pageLoad( );">
-
<キャンバス id="できる" 幅="400px" 高さ="300px">4キャンバス>
-
ボディ>
- html>
ここで使用する 2 つの API メソッド、moveTo と lineTo はそれぞれ線分の始点と終点の座標、変数は (X 座標、Y 座標)、ストロークスタイル、ストロークでそれぞれパス描画スタイルと描画パスです。
2. グラデーションの線を描画します
グラデーション ラインには色のグラデーション効果があります。もちろん、グラデーション スタイルはパスの方向に従うかどうかに関係なく、
XML/HTML コードコンテンツをクリップボードにコピー
- >
-
<html>
-
<頭>
-
<メタ charset="UTF- 8">
- 頭>
-
<スタイル タイプ="text/ css">
- canvas{border:dashed 2px #CCC}
-
スタイル>
-
<スクリプト type="text/ javascript">
- 関数 $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
-
var できる = $$('できる');
-
var cancans = can.getContext('2d');
- cans.moveTo(0,0);
- cans.lineTo(400,300);
-
var gnt1 = cans.createLinearGradient(0,0,400,300);//線性渐变の起止座標
- gnt1.addColorStop(0,'red');// 作成の開始色、0 は偏り量を示し、人は直線上の相対位置を示し、最大は 1、1 つの色に任意に書き込めます个渐变颜色
- gnt1.addColorStop(1,' yellow');
-
cans.lineWidth=3;
-
cans.bloodStyle = gnt1;
- cans.ストローク();
- }
-
スクリプト>
-
<body onload="pageLoad( );">
-
<キャンバス id="できる" 幅="400px" 高さ="300px">4キャンバス>
-
ボディ>
- html>
3. 長方形または正方形を描画します:
HTML4を使用すると、このような四角形の枠は背景コードでしか生成できませんでしたが、HTML5が提供するCanvas機能を利用することで簡単に描画できるようになり、HTML5のメリットは非常に高くなります。
XML/HTML コードコンテンツをクリップボードにコピー
- >
-
<html>
-
<頭>
-
<メタ charset="UTF- 8">
- 頭>
-
<スタイル タイプ="text/ css">
- canvas{border:dashed 2px #CCC}
-
スタイル>
-
<スクリプト type="text/ javascript">
- 関数 $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
-
var できる = $$('できる');
-
var cancans = can.getContext('2d');
-
cans.fillStyle = ' yellow';
- cans.fillRect(30,30,340,240);
- }
-
スクリプト>
-
<body onload="pageLoad( );">
-
<キャンバス id="できる" 幅="400px" 高さ="300px">4キャンバス>
-
ボディ>
-
html>
ここでは fillRect() メソッドが使用されています。文字通りの意味から、ここでのパラメータは説明する価値がありますが、これはそうではありません。数学の座標と同じです。詳しくは
を参照してください。
ここでの X と Y は、キャンバスの左上隅を基準とした開始点から始まります。覚えておいてください。 !
4. 単純な長方形のボックスを描画します
上記の例では、長方形のブロックを描画し、それを色で塗りつぶすことについて説明しています。この例では、塗りつぶし効果を実現せずに、単純に長方形を描画しています。
XML/HTML コードコンテンツをクリップボードにコピー
- >
-
<html>
-
<頭>
-
<メタ charset="UTF- 8">
- 頭>
-
<スタイル タイプ="text/ css">
- canvas{border:dashed 2px #CCC}
-
スタイル>
-
<スクリプト type="text/ javascript">
- 関数 $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
-
var できる = $$('できる');
-
var cancans = can.getContext('2d');
-
cans.bloodStyle = 'red';
- cans.ストロークRect(30,30,340,240);
- }
-
スクリプト>
-
<body onload="pageLoad( );">
-
<キャンバス id="できる" 幅="400px" 高さ="300px">4キャンバス>
-
ボディ>
-
html>
-
これは非常に簡単です。上記の例と同様に、塗りつぶしをストロークに置き換えるだけです。詳細については、上の例を参照してください。
5. 線形グラデーションで長方形を描画します
グラデーションは塗りつぶしの非常に優れた効果です。例 2 と例 3 を組み合わせると、グラデーションの四角形を作成できます。
XML/HTML コードコンテンツをクリップボードにコピー
- >
-
<html>
-
<頭>
-
<メタ charset="UTF- 8">
- 頭>
-
<スタイル タイプ="text/ css">
- canvas{border:dashed 2px #CCC}
-
スタイル>
-
<スクリプト type="text/ javascript">
- 関数 $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
-
var できる = $$('できる');
-
var cancans = can.getContext('2d');
-
var gnt1 = 缶.createLinearGradient(10,0,390,0);
- gnt1.addColorStop(0,'red');
- gnt1.addColorStop(0.5,'green');
- gnt1.addColorStop(1,'blue');
-
cans.fillStyle = gnt1;
- cans.fillRect(10,10,380,280);
- }
-
スクリプト>
-
<body onload="pageLoad( );">
-
<キャンバス id="できる" 幅="400px" 高さ="300px">4キャンバス>
-
ボディ>
- html>
-
説明する必要はありません。fillRect(X,Y,Width,Height) を覚えておいてください。
6. 円を塗りつぶします
楕円形を含む円形は広く使用されています。
XML/HTML コードコンテンツをクリップボードにコピー
- >
-
<html>
-
<頭>
-
<メタ charset="UTF- 8">
- 頭>
-
<スタイル タイプ="text/ css">
- canvas{border:dashed 2px #CCC}
-
スタイル>
-
<スクリプト type="text/ javascript">
- 関数 $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
-
var できる = $$('できる');
-
var cancans = can.getContext('2d');
- cans.beginPath();
- cans.arc(200,150,100,0,Math.PI*2,true);
- cans.closePath();
-
cans.fillStyle = 'green';// 本来、ここで最初に使用されていたものは赤、截图一看,傻眼了,怕上街被愛する国人打啊,其实你懂的~~
- cans.fill();
- }
-
スクリプト>
-
<body onload="pageLoad( );">
-
<キャンバス id="できる" 幅="400px" 高さ="300px">4キャンバス>
-
ボディ>
-
html>
-
ここでの arc メソッドの使用法は、arc(X,Y,Radius,startAngle,endAngle,antiwatchwise) です。これは、(円の中心の X 座標、円の中心の Y 座標、半径、開始角度 (ラジアン)、終了角度) を意味します。ラジアン、時計回りに描画するかどうか);
円弧内のパラメータの比較:
a.cans.arc(200,150,100,0,Math.PI,true);
c, cans.arc(200,150,100,0,Math.PI/2,true);
c, cans.arc(200,150,100,0,Math.PI/2,true);
d, cans.arc(200,150,100,0,Math.PI/2,false);
7. 円形ブロック
XML/HTML コード
コンテンツをクリップボードにコピー
- >
-
<html>
-
<頭>
-
<メタ charset="UTF- 8">
- 頭>
-
<スタイル タイプ="text/ css">
- canvas{border:dashed 2px #CCC}
-
スタイル>
-
<スクリプト type="text/ javascript">
- 関数 $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
-
var できる = $$('できる');
-
var cancans = can.getContext('2d');
- cans.beginPath();
- cans.arc(200,150,100,0,Math.PI*2,false);
- cans.closePath();
-
cans.lineWidth = 5;
-
cans.bloodStyle = 'red';
- cans.ストローク();
- }
-
スクリプト>
-
<body onload="pageLoad( );">
-
<キャンバス id="できる" 幅="400px" 高さ="300px">4キャンバス>
-
ボディ>
- html>
ここでは説明しません。上記の例と同様に、lineWidth は線の幅を制御します。
8. 円形グラデーション
XML/HTML コードコンテンツをクリップボードにコピー
- >
-
<html>
-
<頭>
-
<メタ charset="UTF- 8">
- 頭>
-
<スタイル タイプ="text/ css">
- canvas{border:dashed 2px #CCC}
-
スタイル>
-
<スクリプト type="text/ javascript">
- 関数 $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
-
var できる = $$('できる');
-
var cancans = can.getContext('2d');
-
var gnt = cans.createRadialGradient(200,300,50,200,200,200);
- gnt.addColorStop(1,'red');
- gnt.addColorStop(0,'green');
-
cans.fillStyle = gnt;
- cans.fillRect(0,0,800,600);
- }
-
スクリプト>
-
<body onload="pageLoad( );">
-
<キャンバス id="できる" 幅="800px" 高さ="600px">4キャンバス>
-
ボディ>
-
html>
ここで説明する必要があるのは、createRadialGradient メソッドです。パラメーターは (Xstart、Ystart、radiusStart、XEnd、YEnd、radiusEnd) です。つまり、グラデーションを実装するときに 2 つの円を使用します。1 つは元の円と他の円はグラデーション円です。実際、この座標と半径の制御方法は、
などの多くのスタイルを実現できます。
立体円
XML/HTML コードコンテンツをクリップボードにコピー
-
var gnt = cans.createRadialGradient(200,150,0,200,50,250);
- gnt.addColorStop(0,'red');
- gnt.addColorStop(1,'#333');