HTML5 canvas中的路徑方法


路徑方法

fill()                                填充當前繪圖(路徑)
stroke()                        繪制已定義的路徑
beginPath()                起始一條路徑,或重置當前路徑
moveTo()                        把路徑移動到畫布中的指定點,不創建線條
closePath()                        創建從當前點回到起始點的路徑
lineTo()                        添加一個新點,然后在畫布中創建從該點到最后指定點的線條
clip()                                從原始畫布剪切任意形狀和尺寸的區域
quadraticCurveTo(cpx,cpy,x,y)        創建二次貝塞爾曲線
quadraticCurveTo() 方法通過使用表示二次貝塞爾曲線的指定控制點,向當前路徑添加一個點。
二次貝塞爾曲線需要兩個點。第一個點是用於二次貝塞爾計算中的控制點,第二個點是曲線的結束點。曲線的開始點是當前路徑中最后一個點。如果路徑不存在,那么請使用 beginPath() 和 moveTo() 方法來定義開始點。
       

    開始點:moveTo(20,20)
    控制點:quadraticCurveTo(20,100,200,20)
    結束點:quadraticCurveTo(20,100,200,20)
cpx         貝塞爾控制點的 x 坐標
cpy         貝塞爾控制點的 y 坐標
x         結束點的 x 坐標
y         結束點的 y 坐標


bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)                創建三次方貝塞爾曲線
bezierCurveTo() 方法通過使用表示三次貝塞爾曲線的指定控制點,向當前路徑添加一個點。
三次貝塞爾曲線需要三個點。前兩個點是用於三次貝塞爾計算中的控制點,第三個點是曲線的結束點。曲線的開始點是當前路徑中最后一個點。如果路徑不存在,那么請使用 beginPath() 和 moveTo() 方法來定義開始點。
       

    開始點:moveTo(20,20)
    控制點 1:bezierCurveTo(20,100,200,100,200,20)
    控制點 2:bezierCurveTo(20,100,200,100,200,20)
    結束點:bezierCurveTo(20,100,200,100,200,20)
cp1x         第一個貝塞爾控制點的 x 坐標
cp1y         第一個貝塞爾控制點的 y 坐標
cp2x         第二個貝塞爾控制點的 x 坐標
cp2y         第二個貝塞爾控制點的 y 坐標
x         結束點的 x 坐標
y         結束點的 y 坐標

arc(x,y,r,sAngle,eAngle,counterclockwise)                                創建弧/曲線(用於創建圓形或部分圓)
arc() 方法創建弧/曲線(用於創建圓或部分圓)。
如需通過 arc() 來創建圓,請把起始角設置為 0,結束角設置為 2*Math.PI。
       

    中心:arc(100,75,50,0*Math.PI,1.5*Math.PI)
    起始角:arc(100,75,50,0,1.5*Math.PI)
    結束角:arc(100,75,50,0*Math.PI,1.5*Math.PI)
x         圓的中心的 x 坐標。
y         圓的中心的 y 坐標。
r         圓的半徑。
sAngle         起始角,以弧度計。(弧的圓形的三點鍾位置是 0 度)。
eAngle         結束角,以弧度計。
counterclockwise         可選。規定應該逆時針還是順時針繪圖。False = 順時針,true = 逆時針。

arcTo(x1,y1,x2,y2,r)                        創建兩切線之間的弧/曲線
x1         弧的起點的 x 坐標
y1         弧的起點的 y 坐標
x2         弧的終點的 x 坐標
y2         弧的終點的 y 坐標
r         弧的半徑

isPointInPath()                如果指定的點位於當前路徑中,則返回 true,否則返回 false

<canvas id="d" width="500" height="450" style="border:1px solid #000"></canvas>
<script type="text/javascript">
var a=document.getElementById("d");
var ctx=a.getContext("2d");
ctx.beginPath();        //起始一條路徑,或重置當前路徑
ctx.moveTo(20,20);        //把路徑移動到畫布中的指定點,不創建線條
ctx.lineTo(20,120);        //添加一個新點,然后在畫布中創建從該點到最后指定點的線條
ctx.lineTo(90,120);
ctx.closePath();        //創建從當前點回到起始點的路徑
ctx.stroke();                //繪制已定義的路徑
ctx.fillStyle="green";
ctx.fill();                        //填充當前繪圖(路徑)

ctx.beginPath();
ctx.moveTo(20,150);
ctx.quadraticCurveTo(20,250,200,150);        //創建二次貝塞爾曲線
ctx.stroke();

ctx.beginPath();
ctx.moveTo(20,350)
ctx.bezierCurveTo(20,400,200,400,200,350);        //創建三次方貝塞爾曲線
ctx.stroke();

ctx.beginPath();
ctx.arc(300,200,20,0,1.5*Math.PI);        //創建弧/曲線(用於創建圓形或部分圓)
ctx.stroke();

ctx.beginPath();
ctx.moveTo(300,280);
ctx.lineTo(350,280);
ctx.arcTo(400,280,400,330,50);        //創建兩切線之間的弧/曲線
ctx.lineTo(400,380);
ctx.stroke();

ctx.rect(400,20,50,50);
if(ctx.isPointInPath(401,20)){        //如果指定的點位於當前路徑中,則返回 true,否則返回 false
        ctx.stroke();
}

ctx.rect(150,20,200,120);
ctx.stroke();
ctx.clip();        //從原始畫布剪切任意形狀和尺寸的區域
ctx.fillStyle="green";
ctx.fillRect(0,0,250,100);
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM