1. 程式人生 > >h5的canvas畫布常用方法

h5的canvas畫布常用方法

首先canvas是有預設的寬度和高度,不可以在CSS樣式中設定高階和寬度,否則會按照比例來縮放,一般都是在JS中設定寬度和高度;

下面用一個例子介紹;

<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
body{
background:#303B52;
}
canvas{
background: white;
/*width: 500px;
height: 500px;*/
/*不能在這裡加,因為會預設幫你比例,因此在JS裡賦予*/

}
</style>
</head>
<body>
<canvas id="bd">
<span>sf</span>
</canvas>
</body>
<script>
var sg=document.querySelector('#bd');
sg.width=400;
sg.height=400;
var ge=sg.getContext('2d');
//繪製矩形
    ge.fillStyle='red';   //填充顏色
    ge.fillRect(50,50,100,100); //x y軸座標 寬度  高度   預設黑色
    ge.strokeStyle='blue';//邊框的顏色
    ge.lineWidth='5';   //邊框的大小
    ge.strokeRect(50.5,50.5,100,100); //邊框
//繪製路徑
ge.beginPath();//開始執行
ge.moveTo(100,100); //開始的位置
ge.lineTo(200,200);//第二個位置
ge.lineTo(150,300);//第三個位置
ge.closePath();//起點到終點的連線閉合
ge.stroke();//繪製一條線
ge.lineWidth='5';   //邊框的大小
ge.strokeStyle='brown';//邊框的顏色
ge.lineCap='round';  //線的斷點樣式,round為圓角,spuare 出來的長度為寬度一半10px。

//繪製圓形

制圓弧(arc)(重點)

· 概述:arc() 方法建立弧/曲線(用於建立圓或部分圓)。

語法:ctx.arc(x,y,r,sAngle,eAngle,counterclockwise);

解釋:

x,y:圓心座標。

r:半徑大小。

sAngle:繪製開始的角度。 圓心到最右邊點是0度,順時針方向弧度增大。

eAngel:結束的角度,注意是弧度。π

counterclockwise:是否是逆時針。true是逆時針,false:順時針

弧度和角度的轉換公式: rad = deg*Math.PI/180;

Math提供的方法中sincos等都使用的弧度

ge.arc(200,200,150,0,-360*Math.PI/180,true);
ge.stroke(); 連成線

ge.moveTo(200,200);
ge.arc(200,200,150,90*Math.PI/180,90*Math.PI/180,false);
ge.stroke(); 連成線

//漸變色
var grd=ge.createLinearGradient(150,100,150,300);  //起點座標 終點座標
grd.addColorStop(0,'red');  //位置和顏色
grd.addColorStop(0.5,'green');
grd.addColorStop(1,'blue');

ge.fillStyle=grd;
ge.fillRect(100,100,200,200);

//文字

ge.fillStyle='red';//內容顏色
ge.lineWidth=2;//描邊大小
ge.strokeStyle='blue';//改變描邊顏色
ge.font='60px 宋體';//改變樣式
ge.textBaseline='top';//改變基點
ge.fillText('文字在幹嗎',0,0);//填寫內容 座標位置
ge.strokeText('文字',0,0);//描邊 填寫哪個就描邊哪個 座標位置

ge.shadowOffsetX=10; //x軸座標
ge.shadowOffsetY=10; //y軸座標
ge.shadowBlur=1;  //模糊寬度
ge.shadowColor='#d8d8d8'; //模糊顏色

3.4 變換(重點)

3.4.1 縮放(重點)

Ø scale() 方法縮放當前繪圖,更大或更小

Ø 語法:context.scale(scalewidth,scaleheight)

n scalewidth  :  縮放當前繪圖的寬度 (1=100%, 0.5=50%, 2=200%, 依次類推)

n scaleheight :  縮放當前繪圖的高度 (1=100%, 0.5=50%, 2=200%, etc.)

Ø 注意:縮放的是整個畫布,縮放後,繼續繪製的圖形會被放大或縮小。

3.4.2 位移畫布(重點)

Ø translate() 方法重新對映畫布上的 (0,0) 位置

Ø 語法:context.translate(x,y)

n  x:   新增到水平座標(x)上的值

n  y:   新增到垂直座標(y)上的值

Ø 注意:發生位移後,相當於把畫布的0,0座標 更換到新的x,y的位置,所有繪製的新元素都被影響。

3.4.3 旋轉(重點)

Ø rotate() 方法旋轉當前的繪圖

Ø 語法:context.rotate(angle)

n  angle:   引數是弧度PI

注意:如需將角度轉換為弧度,請使用 degrees*Math.PI/180 公式進行計算。

3.4.4 繪製環境儲存和還原(重要)

Ø context.save() 儲存當前環境的狀態(可以把當前繪製環境進行儲存到快取中)

Ø context.restore() 返回之前儲存過的路徑狀態和屬性(獲取最近快取的ctx)

注意:一般配合位移畫布使用。

3.4.5 設定繪製環境的透明度(瞭解)

Ø context.globalAlpha=number;

n number:透明值。必須介於 0.0(完全透明)與 1.0(不透明) 之間。

注意:設定透明度是全域性的透明度的樣式。注意是全域性的。

</script>
</html>