成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Html5 Canvas 學(xué)習(xí)之路(二)

sorra / 1563人閱讀

摘要:在位置處以寬為高為,清楚指定區(qū)域并使其完全透明。調(diào)用函數(shù)開始一個路徑,調(diào)用函數(shù)結(jié)束一個路徑。端點(diǎn)是在選段邊緣處以線寬為長以一半線寬為寬的矩形。

二:Canvas的繪圖(上) 1. 概述

Canvas具有強(qiáng)大的繪圖功能,可以通過Javascript控制其上下文對象進(jìn)行繪圖。

2. 基本矩形

在Canvas上,繪制基本矩形有三種方式:填充、描邊、清楚。
三種API如下:

fillRect(x,y,width,height);

在位置(x,y)處以寬width、高為height繪制一個填充的矩形。

strokeRect(x,y,width,height);

在位置(x,y)處以寬width、高為height繪制一個矩形邊框,
需要使用當(dāng)前的strokeStyle,lineWidth,lineJoin以及miterLimit設(shè)置。

clearRect(x,y,width,height);

在位置x,y處以寬為width,高為height,清楚指定區(qū)域并使其完全透明。

然后畫幾個矩形,代碼如下:

    function rect(x,y,w,h) {

        context.lineWidth = 2;
        context.strokeStyle = "#000000";
        context.strokeRect(x,y,w,h);
    }
    function manyrect() {
        var i=0,j=0;
        do {
            rect(i,j,250-4*i,250-4*j);
            i = i + 5;
            j = j + 5;
        }while (i<=125);
        context.fillStyle = "#000001";

顯示結(jié)果如下:

3. Canvas狀態(tài)

在 Canvas 上下文中繪圖時可以利用所謂的繪圖堆棧狀態(tài)。每個狀態(tài)隨時存儲 Canvas 上下文數(shù)據(jù)。下面是存儲在狀態(tài)堆棧的數(shù)據(jù)列表:

變換矩陣信息 。

當(dāng)前剪貼區(qū)域 。

畫布屬性當(dāng)前值 。

當(dāng)前路徑和當(dāng)前位圖受Canvas上下文控制,不屬于保存的狀態(tài)。

將一個繪圖狀態(tài)進(jìn)行壓棧和出棧有兩種方法,如下:

context.save() //保存當(dāng)前狀態(tài)到堆棧。

context.restore() //調(diào)出最后存儲的堆?;謴?fù)畫布。

4. 使用路徑創(chuàng)建線段

路徑可以用來在畫布上繪制任何形狀。路徑就是一系列點(diǎn)以及這些點(diǎn)之間的連線。Canvas上下文只能有一個 “當(dāng)前” 路徑,當(dāng)調(diào)用context()方法時,不會將它存儲為當(dāng)前繪圖狀態(tài)的一部分。

路徑的上下文是一個重要概念,它決定了只能變換畫布上的當(dāng)前路徑。

調(diào)用beginPath()函數(shù)開始一個路徑,調(diào)用closePath()函數(shù)結(jié)束一個路徑。

基本的路徑通過如下兩個方法控制:

moveTo()

lineTo()

直線還可以設(shè)置不同的屬性,具體如下:

lineCap 屬性。

定義上下文中線的端點(diǎn),可以有以下三個值。

butt。 默認(rèn)值,端點(diǎn)是垂直于線段邊緣的平直邊緣。

round。 端點(diǎn)是在線段邊緣處以線寬為直徑的半圓。

square。端點(diǎn)是在選段邊緣處以線寬為長、以一半線寬為寬的矩形。

lineJoin 屬性。

定義兩條線相交處產(chǎn)生的拐角,稱為連接。在連接處創(chuàng)建一個填充三角形,可以使用lineJoin設(shè)置它的基本屬性。

miter。默認(rèn)值,在連接處邊緣延長相接。miterLimit是角長和線寬
所允許的最大比例(默認(rèn)值為 10)。

bevel。連接處是一個對角線斜角。

round。連接處是一個圓。

線寬
lineWidth定義線的寬度(默認(rèn)值為10)。

筆觸樣式
strokeStyle定義線和形狀邊框的顏色和樣式。

畫一個簡單的直線,代碼如下:

    function line() {
        context.lineWidth = 10;
        context.beginPath();
        context.moveTo(0,0);
        context.lineTo(100,0);
        context.lineTo(100,100);
        context.stroke();
        context.closePath();
    }

顯示結(jié)果如下:

5. 弧線與曲線(補(bǔ)充)

有兩種函數(shù)可以繪制弧線,如下:

context,arc(x,y,radius,startAngle,endAngle, anticlockwise);

x,y定義圓心的位置,radius定義弧線的半徑。startAngele和endAngle使用弧度值而不是角度值。anticlockwise可以是true或false這兩個值,用于定義弧線的方向。

context.arcTo(x1,y1,x2,y2,radius);

只有一些最新的瀏覽器支持arcTo方法,這個函數(shù)以給定的半徑繪制一條弧線,圓弧的起點(diǎn)與當(dāng)前路徑的位置到(x1,y1)點(diǎn)的直線相切,圓弧的終點(diǎn)與(x1,y1)點(diǎn)到(x2,y2)的直線相切。

context.arcTo 方法要求當(dāng)前路徑至少有一個子路徑。

貝塞爾曲線要比弧線靈活的多,它有立方和平方兩種形式,如下:

context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y);

context.quadraticCurveTo(cpx,cpy,x,y);

Canvas裁剪區(qū)域

結(jié)合save()函數(shù)和restore函數(shù),Canvas裁剪區(qū)域可以限制路徑及其子路徑的繪制區(qū)域,首先通過rect()函數(shù)設(shè)置一個用來繪圖的矩形區(qū)域,然后調(diào)用clip()函數(shù)把用rect()函數(shù)定義的區(qū)域設(shè)置為裁剪區(qū)域。裁剪區(qū)域可以理解為繪圖操作的一種蒙版。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/94336.html

相關(guān)文章

  • Html5 Canvas 學(xué)習(xí)之路(一)

    摘要:一先來一個概述是屏幕上的一個由控制的即時模式位圖區(qū)域,通過調(diào)用,在每一幀完全重繪屏幕上的位圖。有這三個屬性代碼,放在外部文件中,代碼如下添加一個事件監(jiān)聽器,在瀏覽器加載完頁面后調(diào)用函數(shù)。調(diào)用函數(shù)獲得上下文背景文字圖像顯示結(jié)果 一:先來一個Hello World 1. 概述 Html5 Canvas 是屏幕上的一個由JavaScript控制的即時模式位圖區(qū)域,通過JavaScript調(diào)...

    187J3X1 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<