• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. HTML5教程:畫布Canvas基礎知識講解

        時間:2024-10-07 03:37:00 HTML5 我要投稿
        • 相關推薦

        HTML5教程:畫布Canvas基礎知識講解

          Canvas是HTML5最讓人期待的特性之一,目前已獲得大部分Web瀏覽器支持Canvas可以幫助創建游戲、增強圖形用戶界面。下面YJBYS小編為大家帶來畫布Canvas基礎知識,希望對大家學習有所幫助!

        HTML5教程:畫布Canvas基礎知識講解

          HTML5規范引進了很多新特性,其中最令人期待的之一就是Canvas元素。HTML5 Canvas提供了通過JavaScript繪制圖形的方法,此方法使用簡單但功能強大。每一個Canvas元素都有一個“上下文(context)” (想象成繪圖板上的一頁),在其中可以繪制任意圖形。瀏覽器支持多個Canvas上下文,并通過不同的API提供圖形繪制功能。

          大部分的瀏覽器都支持2D Canvas上下文——包括Opera,Firefox,Konqueror和Safari。而且某些版本的Opera還支持3D Canvas,Firefox也可以通過插件形式支持 3D Canvas。

          本文介紹主要介紹2D Canvas基礎以及如何使用基本Canvas函數,如線條、形狀、圖像和文字等。為了理解此文章,你最好了解JavaScript基礎知識。

          下面開始我們的講解:

          canvas基礎

          創建Canvas的方法很簡單,只需要在HTML頁面中添加元素就可以了:

        1 <canvas id="myCanvas" width="300" height="300">
        在线咨询
        2 這是一個Canvas標簽案例
        在线咨询
        3 </canvas>
        在线咨询

          為了能在JavaScript中引用Canvas,最好給它設置ID ;也需要給Canvas設定高度和寬度。

          要在Canvas畫布中繪制圖形需要使用JavaScript。首先通過getElementById函數找到Canvas元素,然后初始化上下文,之后可以使用上下文API繪制各種圖形。下面的腳本可以在Canvas中繪制一個矩形:

        1 var elem = document.getElementById('myCanvas');
        在线咨询
        2 if (elem && elem.getContext) {
        在线咨询
        3 var context = elem.getContext('2d');
        在线咨询
        4 if (context) {
        在线咨询
        5 context.fillRect(0, 0, 150, 100);
        在线咨询
        6 }
        在线咨询
        7 }
        在线咨询

          可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

          2D context API

          介紹了如何創建Canvas后,讓我們來看看2D Canvas API,看看能用這些函數做些什么。

          在上面的例子中,我們展示了繪制矩形是多么簡單,而通過fillStyle和strokeStyle屬性可以更輕松的設置矩形的填充和線條。顏色值使用方法和CSS一樣:十六進制數、rgb()、rgba() 和hsla()。

          通過fillRect可以繪制帶填充的矩形;使用strokeRect可以繪制只有邊框沒有填充的矩形。如果想清除部分Canvas可以使用 clearRect。上述三個方法的參數相同:x, y, width, height。前兩個參數設定 (x,y) 坐標,后兩個參數設置矩形的高度和寬度。

          下面將是一個綜合實例的JavaScript腳本:

        1 context.fillStyle = '#00f';
        在线咨询
        2 context.strokeStyle = '#f00';
        在线咨询
        3 context.lineWidth = 4;
        在线咨询
        4 context.fillRect (0, 0, 150, 50);
        在线咨询
        5 context.strokeRect(0, 60, 150, 50);
        在线咨询
        6 context.clearRect (30, 25, 90, 60);
        在线咨询
        7 context.strokeRect(30, 25, 90, 60);
        在线咨询

          可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

          路徑

          通過Canvas路徑(path)可以繪制任意形狀。可以先繪制輪廓,然后繪制邊框和填充。創建自定義形狀很簡單,使用beginPath()開始 繪制,然后使用直線、曲線和其他圖形繪制你的圖形。繪制完畢后調用fill和stroke即可添加填充或者設置邊框。調用 closePath()結束自定義圖形繪制。

          下面是一個繪制三角的案例的JavaScript腳本:

        1 context.fillStyle = '#00f';
        在线咨询
        2 context.strokeStyle = '#f00';
        在线咨询
        3 context.lineWidth = 4;
        在线咨询
        4 context.beginPath();
        在线咨询
        5 context.moveTo(10, 10);
        在线咨询
        6 context.lineTo(100, 10);
        在线咨询
        7 context.lineTo(10, 100);
        在线咨询
        8 context.lineTo(10, 10);
        在线咨询
        9 context.fill();
        在线咨询
        10 context.stroke();
        在线咨询
        11 context.closePath();
        在线咨询

          可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

          插入圖像

          drawImage方法允許在Canvas中插入其他圖像(img和Canvas元素) 。在Opera中可以在Canvas中繪制SVG圖形。此方法比較復雜,可以有3個、5個或9個參數:

          3個參數:最基本的drawImage使用方法。一個參數指定圖像位置,另兩個參數設置圖像在Canvas中的位置。

          5個參數:中級的drawImage使用方法,包括上面所述3個參數,加兩個參數指明插入圖像寬度和高度 (如果你想改變圖像大小)。

          9個參數:最復雜drawImage雜使用方法,包含上述5個參數外,另外4個參數設置源圖像中的位置和高度寬度。這些參數允許你在顯示圖像前動態裁剪源圖像。

          下面是上述三個使用方法的例子:

        1 context.drawImage(img_elem, dx, dy);
        在线咨询
        2 context.drawImage(img_elem, dx, dy, dw, dh);
        在线咨询
        3 context.drawImage(img_elem, sx, sy, sw, sh, dx, dy, dw, dh);
        在线咨询

          可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

          像素級操作

          2D Context API提供了三個方法用于像素級操作:createImageData,getImageData和putImageData。

          ImageData對象保存了圖像像素值。每個對象有三個屬性: width,height和data。data屬性類型為CanvasPixelArray,用于儲存width*height*4個像素值。每一個像素 有RGB值和透明度alpha值(其值為0至255,包括alpha在內。)。像素的順序從左至右,從上到下,按行存儲。

          來看一個例子:

        1 var imgd = context.createImageData(50,50);
        在线咨询
        2 var pix = imgd.data;
        在线咨询
        3 for (var i = 0; n = pix.length, i < n; i += 4) {
        在线咨询
        4 pix[i ] = 255;
        在线咨询
        5 pix[i+3] = 127;
        在线咨询
        6 }
        在线咨询
        7 context.putImageData(imgd, 0,0);
        在线咨询

          注意:不是所有瀏覽器都實現了createImageData。在支持的瀏覽器中,需要通過getImageData方法獲取ImageData對象。

          通過ImageData可以完成很多功能。如可以實現圖像濾鏡,或可以實現數學可視化 (如分形和其他特效)。來看一個實例:

        1 var imgd = context.getImageData(x, y width, height);
        在线咨询
        2 var pix = imgd.data;
        在线咨询
        3 for (var i = 0, n = pix.length; i < n; i += 4) {
        在线咨询
        4 pix[i ] = 255 - pix[i ];
        在线咨询
        5 pix[i+1] = 255 - pix[i+1];
        在线咨询
        6 pix[i+2] = 255 - pix[i+2];
        在线咨询
        7 }
        在线咨询
        8 context.putImageData(imgd,x, y);
        在线咨询

          可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

          文字

          雖然最近的WebKit版本和Firefox 3.1 nightly build才開始支持Text API,為了保證文章完整性我決定仍在這里介紹文字API。

          context對象可以設置以下text屬性:

          font:文字字體,同CSS font-family屬性;

          textAlign:文字水平對齊方式。可取屬性值: start,end,left,right,center。默認值:start;

          textBaseline:文字豎直對齊方式。可取屬性值:top,hanging,middle,alphabetic,ideographic,bottom。默認值:alphabetic。

          有兩個方法可以繪制文字:fillText和strokeText。第一個繪制帶fillStyle填充的文字,后者繪制只有 strokeStyle邊框的文字。兩者的參數相同:要繪制的文字和文字的位置(x,y)坐標。還有一個可選選項——最大寬度。如果需要的話,瀏覽器會縮 減文字以讓它適應指定寬度。

          文字對齊屬性影響文字與設置的(x,y)坐標的相對位置。

        1 ontext.fillStyle = '#00f';
        在线咨询
        2 context.font = 'italic 30px sans-serif';
        在线咨询
        3 context.textBaseline = 'top';
        在线咨询
        4 context.fillText ('Hello world!', 0, 0);
        在线咨询
        5 context.font = 'bold 30px sans-serif';
        在线咨询
        6 context.strokeText('Hello world!', 0, 50);
        在线咨询

          可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

          陰影

          目前只有Konqueror和Firefox 3.1 nightly build支持Shadows API。API的屬性為:shadowColor:陰影顏色。其值和CSS顏色值一致。

          shadowBlur:設置陰影模糊程度。此值越大,陰影越模糊。其效果和Photoshop的高斯模糊濾鏡相同。

          shadowOffsetX和shadowOffsetY:陰影的x和y偏移量,單位是像素。

        1 context.shadowOffsetX = 5;
        在线咨询
        2 context.shadowOffsetY = 5;
        在线咨询
        3 context.shadowBlur = 4;
        在线咨询
        4 context.shadowColor = 'rgba(255, 0, 0, 0.5)';
        在线咨询
        5 context.fillStyle = '#00f';
        在线咨询
        6 context.fillRect(20, 20, 150, 100);
        在线咨询

          可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

          顏色漸變

          除了CSS顏色, fillStyle和strokeStyle屬性可以設置為CanvasGradient對象。——通過CanvasGradient可以為線條和填充使用顏色漸變。

          欲創建CanvasGradient對象,可以使用兩個方法:createLinearGradient和createRadialGradient。前者創建線性顏色漸變,后者創建圓形顏色漸變。

          創建顏色漸變對象后,可以使用對象的addColorStop方法添加顏色中間值。

          下面的代碼演示了顏色漸變使用方法:

        1 var gradient1 = context.createLinearGradient(sx,sy,dx,dy);
        在线咨询
        2 gradient1.addColorStop(0, '#f00');
        在线咨询
        3 gradient1.addColorStop(0.5, '#ff0');
        在线咨询
        4 gradient1.addColorStop(1, '#00f');
        在线咨询
        5 var gradient2 = context.createRadialGradient(sx,sy,sr,dx,dy, dr);
        在线咨询

          可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【HTML5教程:畫布Canvas基礎知識講解】相關文章:

        攝影基礎知識教程09-05

        韓語發音語法基礎知識講解10-13

        美術素描靜物基礎知識教程07-14

        2017年最新證券從業資格基礎知識講解09-12

        畫布為什么要做底子?01-13

        2017年造價員考試《基礎知識》輔導講解09-08

        最新貨物集裝箱運輸基礎知識講解07-18

        平面設計基礎知識色彩搭配知識點講解08-29

        2017年造價員考試《基礎知識》復習輔導講解10-23

        HTML5的發展08-15

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲一本大道在线 | 一本大道香蕉精品视频在线 | 亚洲免费一级字幕 | 日本中文子幕亚洲乱码 | 综合色一区二区三区 | 五月综合激情婷婷六月 |

            HTML5教程:畫布Canvas基礎知識講解

              Canvas是HTML5最讓人期待的特性之一,目前已獲得大部分Web瀏覽器支持Canvas可以幫助創建游戲、增強圖形用戶界面。下面YJBYS小編為大家帶來畫布Canvas基礎知識,希望對大家學習有所幫助!

            HTML5教程:畫布Canvas基礎知識講解

              HTML5規范引進了很多新特性,其中最令人期待的之一就是Canvas元素。HTML5 Canvas提供了通過JavaScript繪制圖形的方法,此方法使用簡單但功能強大。每一個Canvas元素都有一個“上下文(context)” (想象成繪圖板上的一頁),在其中可以繪制任意圖形。瀏覽器支持多個Canvas上下文,并通過不同的API提供圖形繪制功能。

              大部分的瀏覽器都支持2D Canvas上下文——包括Opera,Firefox,Konqueror和Safari。而且某些版本的Opera還支持3D Canvas,Firefox也可以通過插件形式支持 3D Canvas。

              本文介紹主要介紹2D Canvas基礎以及如何使用基本Canvas函數,如線條、形狀、圖像和文字等。為了理解此文章,你最好了解JavaScript基礎知識。

              下面開始我們的講解:

              canvas基礎

              創建Canvas的方法很簡單,只需要在HTML頁面中添加元素就可以了:

            1 <canvas id="myCanvas" width="300" height="300">
            在线咨询
            2 這是一個Canvas標簽案例
            在线咨询
            3 </canvas>
            在线咨询

              為了能在JavaScript中引用Canvas,最好給它設置ID ;也需要給Canvas設定高度和寬度。

              要在Canvas畫布中繪制圖形需要使用JavaScript。首先通過getElementById函數找到Canvas元素,然后初始化上下文,之后可以使用上下文API繪制各種圖形。下面的腳本可以在Canvas中繪制一個矩形:

            1 var elem = document.getElementById('myCanvas');
            在线咨询
            2 if (elem && elem.getContext) {
            在线咨询
            3 var context = elem.getContext('2d');
            在线咨询
            4 if (context) {
            在线咨询
            5 context.fillRect(0, 0, 150, 100);
            在线咨询
            6 }
            在线咨询
            7 }
            在线咨询

              可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

              2D context API

              介紹了如何創建Canvas后,讓我們來看看2D Canvas API,看看能用這些函數做些什么。

              在上面的例子中,我們展示了繪制矩形是多么簡單,而通過fillStyle和strokeStyle屬性可以更輕松的設置矩形的填充和線條。顏色值使用方法和CSS一樣:十六進制數、rgb()、rgba() 和hsla()。

              通過fillRect可以繪制帶填充的矩形;使用strokeRect可以繪制只有邊框沒有填充的矩形。如果想清除部分Canvas可以使用 clearRect。上述三個方法的參數相同:x, y, width, height。前兩個參數設定 (x,y) 坐標,后兩個參數設置矩形的高度和寬度。

              下面將是一個綜合實例的JavaScript腳本:

            1 context.fillStyle = '#00f';
            在线咨询
            2 context.strokeStyle = '#f00';
            在线咨询
            3 context.lineWidth = 4;
            在线咨询
            4 context.fillRect (0, 0, 150, 50);
            在线咨询
            5 context.strokeRect(0, 60, 150, 50);
            在线咨询
            6 context.clearRect (30, 25, 90, 60);
            在线咨询
            7 context.strokeRect(30, 25, 90, 60);
            在线咨询

              可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

              路徑

              通過Canvas路徑(path)可以繪制任意形狀。可以先繪制輪廓,然后繪制邊框和填充。創建自定義形狀很簡單,使用beginPath()開始 繪制,然后使用直線、曲線和其他圖形繪制你的圖形。繪制完畢后調用fill和stroke即可添加填充或者設置邊框。調用 closePath()結束自定義圖形繪制。

              下面是一個繪制三角的案例的JavaScript腳本:

            1 context.fillStyle = '#00f';
            在线咨询
            2 context.strokeStyle = '#f00';
            在线咨询
            3 context.lineWidth = 4;
            在线咨询
            4 context.beginPath();
            在线咨询
            5 context.moveTo(10, 10);
            在线咨询
            6 context.lineTo(100, 10);
            在线咨询
            7 context.lineTo(10, 100);
            在线咨询
            8 context.lineTo(10, 10);
            在线咨询
            9 context.fill();
            在线咨询
            10 context.stroke();
            在线咨询
            11 context.closePath();
            在线咨询

              可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

              插入圖像

              drawImage方法允許在Canvas中插入其他圖像(img和Canvas元素) 。在Opera中可以在Canvas中繪制SVG圖形。此方法比較復雜,可以有3個、5個或9個參數:

              3個參數:最基本的drawImage使用方法。一個參數指定圖像位置,另兩個參數設置圖像在Canvas中的位置。

              5個參數:中級的drawImage使用方法,包括上面所述3個參數,加兩個參數指明插入圖像寬度和高度 (如果你想改變圖像大小)。

              9個參數:最復雜drawImage雜使用方法,包含上述5個參數外,另外4個參數設置源圖像中的位置和高度寬度。這些參數允許你在顯示圖像前動態裁剪源圖像。

              下面是上述三個使用方法的例子:

            1 context.drawImage(img_elem, dx, dy);
            在线咨询
            2 context.drawImage(img_elem, dx, dy, dw, dh);
            在线咨询
            3 context.drawImage(img_elem, sx, sy, sw, sh, dx, dy, dw, dh);
            在线咨询

              可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

              像素級操作

              2D Context API提供了三個方法用于像素級操作:createImageData,getImageData和putImageData。

              ImageData對象保存了圖像像素值。每個對象有三個屬性: width,height和data。data屬性類型為CanvasPixelArray,用于儲存width*height*4個像素值。每一個像素 有RGB值和透明度alpha值(其值為0至255,包括alpha在內。)。像素的順序從左至右,從上到下,按行存儲。

              來看一個例子:

            1 var imgd = context.createImageData(50,50);
            在线咨询
            2 var pix = imgd.data;
            在线咨询
            3 for (var i = 0; n = pix.length, i < n; i += 4) {
            在线咨询
            4 pix[i ] = 255;
            在线咨询
            5 pix[i+3] = 127;
            在线咨询
            6 }
            在线咨询
            7 context.putImageData(imgd, 0,0);
            在线咨询

              注意:不是所有瀏覽器都實現了createImageData。在支持的瀏覽器中,需要通過getImageData方法獲取ImageData對象。

              通過ImageData可以完成很多功能。如可以實現圖像濾鏡,或可以實現數學可視化 (如分形和其他特效)。來看一個實例:

            1 var imgd = context.getImageData(x, y width, height);
            在线咨询
            2 var pix = imgd.data;
            在线咨询
            3 for (var i = 0, n = pix.length; i < n; i += 4) {
            在线咨询
            4 pix[i ] = 255 - pix[i ];
            在线咨询
            5 pix[i+1] = 255 - pix[i+1];
            在线咨询
            6 pix[i+2] = 255 - pix[i+2];
            在线咨询
            7 }
            在线咨询
            8 context.putImageData(imgd,x, y);
            在线咨询

              可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

              文字

              雖然最近的WebKit版本和Firefox 3.1 nightly build才開始支持Text API,為了保證文章完整性我決定仍在這里介紹文字API。

              context對象可以設置以下text屬性:

              font:文字字體,同CSS font-family屬性;

              textAlign:文字水平對齊方式。可取屬性值: start,end,left,right,center。默認值:start;

              textBaseline:文字豎直對齊方式。可取屬性值:top,hanging,middle,alphabetic,ideographic,bottom。默認值:alphabetic。

              有兩個方法可以繪制文字:fillText和strokeText。第一個繪制帶fillStyle填充的文字,后者繪制只有 strokeStyle邊框的文字。兩者的參數相同:要繪制的文字和文字的位置(x,y)坐標。還有一個可選選項——最大寬度。如果需要的話,瀏覽器會縮 減文字以讓它適應指定寬度。

              文字對齊屬性影響文字與設置的(x,y)坐標的相對位置。

            1 ontext.fillStyle = '#00f';
            在线咨询
            2 context.font = 'italic 30px sans-serif';
            在线咨询
            3 context.textBaseline = 'top';
            在线咨询
            4 context.fillText ('Hello world!', 0, 0);
            在线咨询
            5 context.font = 'bold 30px sans-serif';
            在线咨询
            6 context.strokeText('Hello world!', 0, 50);
            在线咨询

              可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

              陰影

              目前只有Konqueror和Firefox 3.1 nightly build支持Shadows API。API的屬性為:shadowColor:陰影顏色。其值和CSS顏色值一致。

              shadowBlur:設置陰影模糊程度。此值越大,陰影越模糊。其效果和Photoshop的高斯模糊濾鏡相同。

              shadowOffsetX和shadowOffsetY:陰影的x和y偏移量,單位是像素。

            1 context.shadowOffsetX = 5;
            在线咨询
            2 context.shadowOffsetY = 5;
            在线咨询
            3 context.shadowBlur = 4;
            在线咨询
            4 context.shadowColor = 'rgba(255, 0, 0, 0.5)';
            在线咨询
            5 context.fillStyle = '#00f';
            在线咨询
            6 context.fillRect(20, 20, 150, 100);
            在线咨询

              可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。

              顏色漸變

              除了CSS顏色, fillStyle和strokeStyle屬性可以設置為CanvasGradient對象。——通過CanvasGradient可以為線條和填充使用顏色漸變。

              欲創建CanvasGradient對象,可以使用兩個方法:createLinearGradient和createRadialGradient。前者創建線性顏色漸變,后者創建圓形顏色漸變。

              創建顏色漸變對象后,可以使用對象的addColorStop方法添加顏色中間值。

              下面的代碼演示了顏色漸變使用方法:

            1 var gradient1 = context.createLinearGradient(sx,sy,dx,dy);
            在线咨询
            2 gradient1.addColorStop(0, '#f00');
            在线咨询
            3 gradient1.addColorStop(0.5, '#ff0');
            在线咨询
            4 gradient1.addColorStop(1, '#00f');
            在线咨询
            5 var gradient2 = context.createRadialGradient(sx,sy,sr,dx,dy, dr);
            在线咨询

              可以把上面代碼放置在文檔head部分中,或者放在外部JavaScript文件中。