《Html5 實(shí)例》閱讀筆記(二)

  1. MDC canvas 教程 可以查看到 canvas 的更多信息。

  2. 可以在 Canvas 中繪制有一定透明度的圖形,如下所示。
    <script>
    var canvas = document.getElementById("mycanvas");
    var mycontext = canvas.getContext("2d");

         mycontext.beginPath();
         mycontext.arc(40, 40, 25, 0, Math.PI * 2, true);
         mycontext.closePath();
         mycontext.fillStyle = "#f00";
         mycontext.fill();
    
         mycontext.beginPath();
         mycontext.arc(70, 40, 25, 0, Math.PI * 2, true);
         mycontext.closePath();
         mycontext.fillStyle = "rgba(0,0,255,0.5)";
         mycontext.fill();
     </script>
    

    繪制的效果如下所示

    demo1.png

    arc(x坐標(biāo),y坐標(biāo),半徑,起始角度,終點(diǎn)角度,順時(shí)針或逆時(shí)針繪制)

關(guān)于透明度的使用,可以參見 [styles and colors](https://developer.mozilla.org /en-US/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors) 。

  1. 有三種方法設(shè)置 canvas 的大小。一種是直接給 canvas 指定 widthheight 屬性
    <canvas width="200" height="200" id="mycanvas"></canvas>
    其它兩種都是通過 JavaScript 控制的
    // 第一種
    mycontext.width = 200;
    mycontext.height = 200;

     //第二種
     mycontext.setAttribute("width", "200");
     mycontext.setAttribute("height", "200");
    

當(dāng)然,你可能想到,我直接利用 CSS 改變它的大小不是一樣的嗎?其實(shí)不是這樣的,無論你是直接使用 CSS 控制它的大小,還是在 JavaScript 設(shè)置 CSS 屬性,都不能實(shí)質(zhì)上改變它的小,只能說 Canvas 被拉伸了或者說是收縮了。

  1. 我們還可以創(chuàng)建漸變,利用 createLinearGradient(startX, startY, endX, endY) 方法。
    <script>
    var canvas = document.getElementById("mycanvas");
    var mycontext = canvas.getContext("2d");

         mycontext.beginPath();
         mycontext.lineWidth = "12";
         mycontext.lineCap = "round";
         mycontext.lineJoin = "round";
    
         var linegrad = mycontext.createLinearGradient(20, 20, 40, 60);
         linegrad.addColorStop(0.5, "#0f0");
         linegrad.addColorStop(1, "#fff");
         mycontext.fillStyle = linegrad;
    
         mycontext.moveTo(20, 20);
         mycontext.lineTo(50, 50);
         mycontext.lineTo(20, 70);
         mycontext.closePath();
         mycontext.fill();
    
     </script>
    
  2. 可以將我們的圖片繪制在 Canvas 中,下面就用下面這張圖片當(dāng)做例子。

    1.jpg

    <script>
    var canvas = document.getElementById("mycanvas");
    var mycontext = canvas.getContext("2d");

         var img = new Image();
         img.onload = function () {
             mycontext.drawImage(img, 0, 0);
         }
         img.src = "one.jpg";
     
     </script>
    

這里我們?cè)O(shè)置當(dāng)圖像加載的時(shí)候,就利用 drawImage() 方法將圖片繪制在 (0, 0) 的位置上。

demo02.png

這是效果圖,可見,這的確是圖片的左上角部分,但是由于Canvas的寬高不夠,所以將我們的圖片進(jìn)行了裁剪。這種效果可能不是我們想要的,所以我們可能用到 drawImage() 的另一種調(diào)用方式,這種參數(shù)接收 8 個(gè)參數(shù),第一個(gè)參數(shù)當(dāng)然是圖片變量,接下來就是第一個(gè)四元參數(shù) (sx, sy, sw, sh) 代表要捕獲的圖像數(shù)據(jù)的左上角位置及其寬度和高度,后一個(gè)四元參數(shù) (dx, dy, dw, dh) 表示要在 canvas 元素中圖像數(shù)據(jù)所要復(fù)制到的位置的左上角及其寬度和高度。
mycontext.drawImage(img, 400, 450, 200, 200, 0, 0, 200, 200);
這個(gè)時(shí)候的效果如下
demo03.png

  1. Canvas 中放置文本有兩種方式 fillText()strokeText() 使用方法和效果如下
    mycontext.font = "25pt Arial";
    mycontext.fillText("Hello canvas", 20, 50);
    mycontext.strokeText("Hello canvas", 20, 100);
demo04.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一:canvas簡介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標(biāo)簽 ②:HTML5 ...
    GreenHand1閱讀 4,874評(píng)論 2 32
  • 一、canvas簡介 1.1 什么是canvas?(了解) 是HTML5提供的一種新標(biāo)簽 Canvas是一個(gè)矩形區(qū)...
    Looog閱讀 4,034評(píng)論 3 40
  • 一、圖形的組合方式 globalAlpha是一個(gè)介于0和1之間的值(包括0和1),用于指定所有繪制的透明度。默認(rèn)值...
    空谷悠閱讀 1,471評(píng)論 0 0
  • 一、canvas簡介 1.1 什么是canvas?(了解) 是HTML5提供的一種新標(biāo)簽 Canvas是一個(gè)矩形區(qū)...
    J_L_L閱讀 1,670評(píng)論 0 4
  • 書中代碼示例效果展示:Core HTML5 Canvas Examples 基礎(chǔ)知識(shí) canvas元素 canva...
    szu_bee閱讀 3,039評(píng)論 2 28

友情鏈接更多精彩內(nèi)容