站長資訊網
最全最豐富的資訊網站

Canvas學習系列一:初識canvas

最近你開始在學習canvas,打算把學習canvas的整個學習過程當中的一些筆記與總結記錄下來,如有什么不足之處還請大神們多多指出。

1. canvas介紹

Canvas元素的出現,可以說開啟的Web世界繪制動畫,圖形的大門,其功能非常強大
canvas 元素是HTML5中功能最強大的元素,它的能力主要是通過Canvas中的Context(繪圖上下文/繪圖環境)對象表現出來的。該對象從canvas本身獲取。

var canvas = getElementById('canvas');var context = canvas.getContext('2d');

2. canvas的后備內容

Canvas元素之間包含的文本,這種文本稱為 "后備內容",只有在瀏覽器不支持canvas元素時才會顯示該文本內容

<canvas>當前瀏覽器不支持canvas元素,請更換瀏覽器</canvas>

3. Canvas的尺寸

canvas元素時默認寬為300px、高為150px。

我們可以通過canvas的width,height屬性去修改canvas的大小,我們也可通過CSS去修改canvas元素的大小。但是二者的修改是有區別的。

canvas實際上有兩套尺寸:

一個是canvas元素的大小,一個是canvas繪圖表面的大小。

當我們用canvas的屬性width,height時實際上我們同時修改了元素的大小與繪圖表面的大小

當我們用CSS來設定時,是會修改canvas元素的大小,不會影響繪圖表面的大小,這時瀏覽器就會對繪圖表面縮放,會出現我們不想得到的效果

width與height屬性修改canvas尺寸大小時的表現

<canvas id="canvas" width="600" height="300">當前瀏覽器不支持canvas,請更換瀏覽器</canvas>  <script type="text/javascript">var canvas = document.getElementById('canvas');var cxt = canvas.getContext('2d');  cxt.font = "38px Arial";  cxt.fillStyle = "#427ACC";  cxt.strokeStyle = "#00116A";  cxt.fillText('Hello Canvas', canvas.width/2 - 110, canvas.height/2 + 15);  cxt.strokeText('Hello Canvas', canvas.width/2 - 110, canvas.height/2 + 15);</script>

Canvas學習系列一:初識canvas

用CSS去修改canvas元素尺寸大小時的表現

<!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8">      <title>canvas尺寸問題</title>      <style>#canvas {              margin: 0 auto;              padding: 0;              width: 600px;              height: 300px;              border: 1px solid #ccc;          }</style>  </head>  <body>  <img src="" alt="" id="dataImage">  <canvas id="canvas">當前瀏覽器不支持canvas,請更換瀏覽器</canvas>  <script type="text/javascript">var canvas = document.getElementById('canvas');var cxt  = canvas.getContext('2d');      cxt.font = "38px Arial";      cxt.fillStyle = "#427ACC";      cxt.strokeStyle = "#00116A";      cxt.fillText('Hello World', canvas.width/2 - 110, canvas.height/2 + 15);      cxt.strokeText('Hello World', canvas.width/2 - 110, canvas.height/2 + 15);</script>  </body>  </html>

Canvas學習系列一:初識canvas

所以我們在設置Canvas元素的大小時,最好不要使用CSS去設置,我們可以這么去設置

<canvas id="canvas" width="600" height="300">當前瀏覽器不支持canvas,請更換瀏覽器</canvas>

或者

<script type="text/javascript">var canvas = document.getElementById('canvas');  canvas.width = '600'; //canvas的屬性取值為非負整數,所以不能帶有pxcanvas.height = '300';</script>

4. canvas API

canvas元素并未提供很多API,它只提供了兩個屬性三個方法,而繪圖功能的方法與屬性全都是canvas的繪圖環境(context)對象提供。

  1. width:設置/獲取canvas元素繪圖表面的寬度,默認值為300。

  2. height:設置/獲取canvas元素繪圖表面的高度,默認值為150。

  3. getContext(): 返回canvas元素的繪圖環境對象。

  4. toDataURL(): 描述:返回一個data URI:會根據type指定的參數形式將canvas中的圖片編碼成一個UTF-16字符串的形式。

  5. toBold(): 描述:創建Blob對象,用以展示canvas上的圖片;這個圖片文件可以被緩存或保存到本地,由User Agent( 用戶代理端 )自行決定。

  

toDataURL():

  type 可選參數

  圖片格式,默認為 image/png

  encoderOptions 可選參數

  當圖片格式為 image/jpeg 或 image/webp的情況下,可以從 0 到 1 的區間內選擇圖片的質量。

  如果超出取值范圍,將會使用默認值 0.92,默認分辨率為96dpi。

   這里值得注意:

  • 如果canvas的高度或者寬度為0時,會返回字符串 "data:,"

  • 如果傳入的類型不是 "image/png", 但是返回的值以 "data: image/png"開頭,說明傳入的類型不支持

  • Chrome支持“image/webp”類型

  盡管在默認情況下canvas對象是一副位圖,但是并不是HTML中的img元素,所以我們可以利用toDataURL方法創建一幅表示canvas的圖像;也可以利用此方法創建和操作緩沖canvas。 

<!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8">      <title>canvas尺寸問題</title>      <style>#canvas {              margin: 0 auto;              padding: 0;              display: none;          }</style>  </head>  <body>  <img src="" alt="" id="dataImage">  <canvas id="canvas">當前瀏覽器不支持canvas,請更換瀏覽器</canvas>  <script type="text/javascript">var canvas = document.getElementById('canvas');var dataImage = document.getElementById('dataImage');      canvas.width = '600'; //canvas的屬性取值為非負整數,所以不能帶有pxcanvas.height = '300';var cxt  = canvas.getContext('2d');      cxt.font = "38px Arial";      cxt.fillStyle = "#427ACC";      cxt.strokeStyle = "#00116A";      cxt.fillText('Hello World', canvas.width/2 - 110, canvas.height/2 + 15);      cxt.strokeText('Hello World', canvas.width/2 - 110, canvas.height/2 + 15);var dataUrl = canvas.toDataURL();      dataImage.src = dataUrl;</script>  </body>  </html>

toBold():

目前該方法只有Firefox與IE10瀏覽器支持


參考文章:

MDN Web 技術文檔

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
精品视频一区二区三区免费| 亚洲国产精品成人一区| 国产一卡2卡3卡四卡精品一信息| 在线精品视频播放| 国产成人A人亚洲精品无码| 国产亚洲精品a在线观看| 国产精品福利久久| 国产精品白嫩美女在线观看| 日韩精品无码免费专区午夜| 国产精品亚洲va在线观看| 亚洲精品av无码喷奶水糖心| 中文字幕动漫精品专区| 中文字幕无码精品亚洲资源网| 免费精品国产自产拍在线观看| 中文字幕无码日韩欧毛| 精品久久久一二三区| 亚洲男人的天堂久久精品| 亚洲AV无码国产精品色| 亚洲狠狠ady亚洲精品大秀| 91精品国产乱码在线观看| 欧洲精品99毛片免费高清观看| 亚洲精品无码久久不卡| 日韩电影免费在线| 日韩免费高清视频网站| 精品400部自拍视频在线播放| 人妻无码精品久久亚瑟影视| 七次郎在线视频精品视频| 亚洲精品成人片在线观看| 国产高清一级毛片精品| 国产精品久久久久久久午夜片| 亚洲精品无码久久毛片| 国产福利精品视频自拍| 久久国产精品一区| 伊人这里只有精品| 国产综合精品一区二区三区| 国产乱码精品一品二品| 精品国产福利第一区二区三区 | 99久久精品免费精品国产| 热re99久久精品国99热| 999国产高清在线精品| 99re这里只有精品国产精品|