校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > HTML5 Canvas繪制文本及圖片的基礎教程

HTML5 Canvas繪制文本及圖片的基礎教程

熱門標簽:農村住宅地圖標注 濟南辦理400電話 ai電銷機器人連接網關 漳州人工外呼系統排名 鶴壁手機自動外呼系統怎么安裝 中紳電銷智能機器人 跟電銷機器人做同事 鄭州電銷外呼系統違法嗎 威海營銷外呼系統招商

繪制文本

在HTML5中,我們還可以在Canvas「畫布」上繪制我們所需的文本文字,其中所涉及到的CanvasRenderingContext2D對象的主要屬性和方法如下:

屬性或方法 基本描述
font 設置繪制文字所使用的字體,例如20px 宋體,默認值為10px sans-serif。該屬性的用法與css font屬性一致,例如italic bold 14px/30px Arial,宋體
fillStyle 用于設置畫筆填充路徑內部的顏色、漸變和模式。該屬性的值可以是一個表示CSS顏色值的字符串。如果你的繪制需求比較復雜,該屬性的值還可以是一個CanvasGradient對象或者CanvasPattern對象
strokeStyle 用于設置畫筆繪制路徑的顏色、漸變和模式。該屬性的值可以是一個表示CSS顏色值的字符串。如果你的繪制需求比較復雜,該屬性的值還可以是一個CanvasGradient對象或者CanvasPattern對象
fillText(string text, int x, int y[, int maxWidth]) 從指定坐標點位置開始繪制填充的文本文字。參數maxWidth是可選的,如果文本內容寬度超過該參數設置,則會自動按比例縮小字體以適應寬度。與本方法對應的樣式設置屬性為fillStyle。
strokeText(string text, int x, int y[, int maxWidth]) 從指定坐標點位置開始繪制非填充的文本文字(文字內部是空心的)。參數maxWidth是可選的,如果文本內容寬度超過該參數設置,則會自動按比例縮小字體以適應寬度。該方法與fillText()用法一致,不過strokeText()繪制的文字內部是非填充(空心)的,fillText()繪制的文字是內部填充(實心)的。與本方法對應的樣式設置屬性為strokeStyle。

從上面的API描述信息中我們可以得知,在Canvas中可以使用兩種方式來繪制文本文字:一種是使用fillText()+fillStyle來繪制填充(實心)的文字;一種是使用strokeText()+strokeStyle繪制非填充(空心)的文字。

下面,我們先來看看如何使用canvas繪制實心文字,具體html代碼如下:

JavaScript Code復制內容到剪貼板
  1. <!DOCTYPE html>   
  2. <html>   
  3. <head>   
  4. <meta charset="UTF-8">   
  5. <title>HTML5 Canvas繪制文本文字入門示例</title>   
  6. </head>   
  7. <body>   
  8.   
  9. <!-- 添加canvas標簽,并加上紅色邊框以便于在頁面上查看 -->   
  10. <canvas id="myCanvas" width="400px" height="300px" style="border: 1px solid red;">   
  11. 您的瀏覽器不支持canvas標簽。   
  12. </canvas>   
  13.   
  14. <script type="text/javascript">   
  15. //獲取Canvas對象(畫布)   
  16. var canvas = document.getElementById("myCanvas");   
  17. //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
  18. if(canvas.getContext){     
  19.     //獲取對應的CanvasRenderingContext2D對象(畫筆)   
  20.     var ctx = canvas.getContext("2d");   
  21.        
  22.     //設置字體樣式   
  23.     ctx.font = "30px Courier New";   
  24.     //設置字體填充顏色   
  25.     ctx.fillStyle = "blue";   
  26.     //從坐標點(50,50)開始繪制文字   
  27.     ctx.fillText("CodePlayer+中文測試", 50, 50);   
  28. }   
  29. </script>   
  30. </body>   
  31. </html>  

對應的顯示效果如下:

接著,我們使其他環境條件均保持不變,再次使用strokeText()+strokeStyle方式來繪制上述示例中的文字,對應的JavaScript代碼如下:

JavaScript Code復制內容到剪貼板
  1. <script type="text/javascript">   
  2. //獲取Canvas對象(畫布)   
  3. var canvas = document.getElementById("myCanvas");   
  4. //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
  5. if(canvas.getContext){     
  6.     //獲取對應的CanvasRenderingContext2D對象(畫筆)   
  7.     var ctx = canvas.getContext("2d");   
  8.        
  9.     //設置字體樣式   
  10.     ctx.font = "30px Courier New";   
  11.     //設置字體顏色   
  12.     ctx.strokeStyle = "blue";   
  13.     //從坐標點(50,50)開始繪制文字   
  14.     ctx.strokeText("CodePlayer+中文測試", 50, 50);   
  15. }   
  16. </script>  

我們再次使用瀏覽器訪問頁面,將會看到如下顯示效果(效果圖片中的"CodePlayer"字樣其實也是空心的,只是由于字體較小導致兩側看起來重疊在了一起):


繪制圖片
在html5中,除了利用canvas繪制矢量圖形之外,我們還可以在canvas「畫布」上繪制現有的圖像文件。

首先,我們來看看使用canvas繪制圖像文件需要用到CanvasRenderingContext2D對象的哪些主要屬性和方法:

XML/HTML Code復制內容到剪貼板
  1. drawImage(mixed image, int x, int y)  

以canvas上指定的坐標點開始,按照圖像的原始尺寸大小繪制整個圖像。這里的image可以是Image對象,也可以是Canvas對象(下同)。

XML/HTML Code復制內容到剪貼板
  1. drawImage(mixed image, int x, int y, int width, int height)  

以canvas上指定的坐標點開始,以指定的大小(width和height)繪制整個圖像,圖像將根據指定的尺寸自動進行相應的縮放。
drawImage(mixed image, int imageX, int imageY, int imageWidth, int imageHeight, int canvasX, int canvasY, int canvasWidth, int canvasHeight)
將指定圖像的局部圖像(以(imageX, imageY)為左上角、寬度為imageWidth、高度為imageHeight的矩形部分)繪制到canvas中以(canvasX,canvasY)為左上角坐標、寬度為canvasWidth、高度為canvasHeight的矩形區域中
是的,你沒有看錯。要在canvas中繪制圖像,我們可以使用一個名為drawImage()的方法,不過該方法具有三種不同的變體,每個方法變體允許接收的參數不僅數量不同,連參數的含義也不盡相同。

在這里,我們對上述三個變體分別舉例說明。

首先,我們使用drawImage()的第一個變體在canvas上繪制Google的logo圖片(原始尺寸為550 x 190)。

JavaScript Code復制內容到剪貼板
  1. <!DOCTYPE html>   
  2. <html>   
  3. <head>   
  4. <meta charset="UTF-8">   
  5. <title>HTML5 Canvas繪制圖像入門示例</title>   
  6. </head>   
  7. <body>   
  8.   
  9. <!-- 添加canvas標簽,并加上紅色邊框以便于在頁面上查看 -->   
  10. <canvas id="myCanvas" width="400px" height="300px" style="border: 1px solid red;">   
  11. 您的瀏覽器不支持canvas標簽。   
  12. </canvas>   
  13.   
  14. <script type="text/javascript">   
  15. //獲取Canvas對象(畫布)   
  16. var canvas = document.getElementById("myCanvas");   
  17. //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
  18. if(canvas.getContext){     
  19.     //獲取對應的CanvasRenderingContext2D對象(畫筆)   
  20.     var ctx = canvas.getContext("2d");   
  21.        
  22.     //創建新的圖片對象   
  23.     var img = new Image();   
  24.     //指定圖片的URL   
  25.     img.src = "http://www.365mini.com/image/google_logo.png";   
  26.     //瀏覽器加載圖片完畢后再繪制圖片   
  27.     img.onload = function(){   
  28.         //以Canvas畫布上的坐標(10,10)為起始點,繪制圖像   
  29.         ctx.drawImage(img, 10, 10);                
  30.     };   
  31. }   
  32. </script>   
  33. </body>   
  34. </html>  

對應的顯示效果如下:

由于Google的Logo圖像過大,超過了canvas的尺寸范圍,因此只能顯示出圖像的一部分。此時,我們使用第2個變體將Google的logo圖像縮小到指定的寬度和高度,并繪制到canvas中。

JavaScript Code復制內容到剪貼板
  1. <script type="text/javascript">   
  2. //獲取Canvas對象(畫布)   
  3. var canvas = document.getElementById("myCanvas");   
  4. //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
  5. if(canvas.getContext){     
  6.     //獲取對應的CanvasRenderingContext2D對象(畫筆)   
  7.     var ctx = canvas.getContext("2d");   
  8.        
  9.     //創建新的圖片對象   
  10.     var img = new Image();   
  11.     //指定圖片的URL   
  12.     img.src = "http://www.365mini.com/image/google_logo.png";   
  13.     //瀏覽器加載圖片完畢后再繪制圖片   
  14.     img.onload = function(){   
  15.         //以Canvas畫布上的坐標(10,10)為起始點,繪制圖像   
  16.         //圖像的寬度和高度分別縮放到350px和100px   
  17.         ctx.drawImage(img, 10, 10, 350, 100);                
  18.     };   
  19. }   
  20. </script>  

我們將Google的logo圖像進行縮放后,此時就可以在canvas中看到整個圖像了:

最后,我們使用第三個方法變體將Google logo中的"Goo"部分圖像繪制到canvas中("Goo"部分的圖像大小可以使用Photoshop等工具測量得出,這里直接使用測量后的結果)。

JavaScript Code復制內容到剪貼板
  1. <script type="text/javascript">   
  2. //獲取Canvas對象(畫布)   
  3. var canvas = document.getElementById("myCanvas");   
  4. //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤   
  5. if(canvas.getContext){     
  6.     //獲取對應的CanvasRenderingContext2D對象(畫筆)   
  7.     var ctx = canvas.getContext("2d");   
  8.        
  9.     //創建新的圖片對象   
  10.     var img = new Image();   
  11.     //指定圖片的URL   
  12.     img.src = "http://www.365mini.com/image/google_logo.png";   
  13.     //瀏覽器加載圖片完畢后再繪制圖片   
  14.     img.onload = function(){   
  15.         /*  
  16.          * 將圖像左側的"Goo"部分(即以坐標(0,0)為左上角坐標、寬度為332px、高度為190px的部分圖像)  
  17.          * 繪制到canvas中以坐標(10,10)為左上角、寬度為332px、高度為190px的矩形區域  
  18.          *  
  19.          * canvas繪制圖像的目標區域的寬度和高度與截取的部分圖像尺寸保持一致,  
  20.          * 就表示不進行縮放,以原始尺寸截取部分圖像  
  21.          */           
  22.         ctx.drawImage(img, 0, 0, 332, 190, 10, 10, 332, 190);                
  23.     };   
  24. }   
  25. </script>  

此時,我們就可以看到canvas中顯示的"Goo"局部圖像了:

標簽:甘南 蘇州 咸陽 惠州 營口 萍鄉 紅河 文山

巨人網絡通訊聲明:本文標題《HTML5 Canvas繪制文本及圖片的基礎教程》,本文關鍵詞  HTML5,Canvas,繪制,文本,及,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5 Canvas繪制文本及圖片的基礎教程》相關的同類信息!
  • 本頁收集關于HTML5 Canvas繪制文本及圖片的基礎教程的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产精品12区| 欧美日韩成人综合天天影院| 蜜臀国产一区二区三区在线播放| 亚洲美腿欧美偷拍| 国产精品欧美一区喷水| 国产清纯在线一区二区www| 亚洲精品一区二区三区蜜桃下载 | 一本一道综合狠狠老| 成人精品国产免费网站| 国产91对白在线观看九色| 国产乱子伦视频一区二区三区| 久久国产精品第一页| 韩国精品主播一区二区在线观看| 激情欧美一区二区三区在线观看| 美腿丝袜一区二区三区| 午夜欧美视频在线观看| 日日夜夜免费精品| 天堂在线一区二区| 久久99精品久久只有精品| 久久99蜜桃精品| 韩国三级电影一区二区| 国产精品99久久久久久有的能看| 国产一区免费电影| 成人免费视频网站在线观看| 99久久精品免费看国产免费软件| 91在线精品一区二区| 欧美性受xxxx黑人xyx| 欧美精品aⅴ在线视频| 欧美videos中文字幕| 日本一区二区综合亚洲| 国产精品成人在线观看| 一区二区三区四区在线| 国产精品一区二区免费不卡 | 日韩欧美一级二级三级久久久| 日韩视频一区在线观看| 久久免费国产精品| 国产精品嫩草影院com| 亚洲免费观看高清完整版在线观看| 一区二区三区自拍| 日韩国产欧美在线视频| 国产一区二区三区电影在线观看 | 欧美日本不卡视频| 91精品国产91久久综合桃花| 久久天堂av综合合色蜜桃网| 亚洲欧洲日韩女同| 亚洲成人先锋电影| 九九视频精品免费| 不卡一二三区首页| 欧美日韩不卡在线| 久久久亚洲欧洲日产国码αv| 国产精品久久三区| 午夜不卡av在线| 国产精品一级片在线观看| 一本大道综合伊人精品热热 | 欧美日韩国产高清一区二区三区| 日韩精品在线一区二区| 国产精品二三区| 日韩电影在线观看一区| a在线播放不卡| 宅男噜噜噜66一区二区66| 国产亚洲短视频| 亚洲电影你懂得| 国产成人免费在线观看| 在线免费亚洲电影| 久久久精品综合| 午夜电影网亚洲视频| 成人av在线电影| 欧美一级日韩不卡播放免费| 中文字幕一区二区三区在线观看 | 色综合天天综合给合国产| 在线播放视频一区| 国产精品另类一区| 蜜臀av在线播放一区二区三区| 99热精品国产| 精品久久一区二区三区| 亚洲图片欧美综合| av色综合久久天堂av综合| 欧美成人激情免费网| 一个色妞综合视频在线观看| 国产盗摄一区二区| 欧美一区二区三区男人的天堂| 中文字幕中文在线不卡住| 韩国三级中文字幕hd久久精品| 欧美性极品少妇| 日韩一区中文字幕| 国产精品一二三四| 日韩视频免费观看高清完整版 | 国产一区三区三区| 6080国产精品一区二区| 亚洲一二三区不卡| av一区二区不卡| 欧美激情中文字幕一区二区| 精品一区免费av| 欧美福利视频一区| 亚洲一区二区在线播放相泽 | proumb性欧美在线观看| 久久久欧美精品sm网站| 久久99精品视频| 日韩欧美国产精品| 日本美女一区二区三区视频| 欧美性生交片4| 亚洲视频你懂的| 成人福利视频网站| 国产日韩欧美制服另类| 国产麻豆午夜三级精品| 日韩美女在线视频| 日本中文字幕一区二区有限公司| 欧美制服丝袜第一页| 亚洲自拍都市欧美小说| 欧美午夜精品电影| 一区二区三区四区乱视频| 91网址在线看| 亚洲激情成人在线| 欧美色视频在线观看| 夜夜嗨av一区二区三区网页| 日本久久一区二区| 一区二区三区.www| 精品视频在线看| 视频一区中文字幕国产| 欧美一区日韩一区| 美国毛片一区二区三区| 成人免费在线视频观看| 99在线热播精品免费| 亚洲欧洲国产日本综合| 色偷偷88欧美精品久久久| 亚洲精品视频在线| 欧美影院一区二区三区| 亚洲成人高清在线| 日韩一区二区精品| 激情av综合网| 日本一区二区三区久久久久久久久不 | 国产精品高潮呻吟久久| 91网上在线视频| 亚洲高清免费观看高清完整版在线观看| 在线观看亚洲精品视频| 午夜视频在线观看一区二区| 91精品在线观看入口| 国产美女一区二区| 中文字幕不卡在线观看| 色吧成人激情小说| 日本不卡中文字幕| 国产亚洲精品aa| 色婷婷综合久久久久中文一区二区| 亚洲精选视频在线| 日韩天堂在线观看| 99精品国产热久久91蜜凸| 性久久久久久久久久久久| 欧美电视剧在线看免费| 成人性色生活片免费看爆迷你毛片| 综合网在线视频| 在线91免费看| 国产成人啪免费观看软件| 亚洲精品视频在线观看网站| 欧美大度的电影原声| 高清不卡在线观看av| 亚洲一区二区在线免费看| 久久人人97超碰com| 欧美午夜影院一区| 国产精品亚洲视频| 亚洲成人精品在线观看| 亚洲国产精品成人综合色在线婷婷| 欧美在线看片a免费观看| 久久精品国产一区二区三| 亚洲卡通欧美制服中文| 精品sm在线观看| 欧美欧美欧美欧美首页| 成人免费精品视频| 日本欧美大码aⅴ在线播放| 亚洲免费在线观看视频| 精品久久久久一区二区国产| 色综合久久中文字幕综合网| 久久99精品国产麻豆婷婷洗澡| 夜夜爽夜夜爽精品视频| 欧美激情在线一区二区| 日韩免费福利电影在线观看| 欧美性淫爽ww久久久久无| 国产91在线|亚洲| 蜜桃视频一区二区| 亚洲午夜精品17c| 亚洲天堂精品在线观看| 久久久夜色精品亚洲| 91精品国产日韩91久久久久久| 色丁香久综合在线久综合在线观看| 国产精选一区二区三区| 捆绑紧缚一区二区三区视频| 亚洲香肠在线观看| 亚洲欧美乱综合| 中文成人综合网| 久久精品欧美一区二区三区麻豆 | 亚洲国产精品一区二区久久 | 黄网站免费久久| 日韩精品亚洲专区| 亚洲成人午夜影院| 亚洲免费高清视频在线| 亚洲欧洲av一区二区三区久久| 欧美国产禁国产网站cc| 久久天堂av综合合色蜜桃网| 欧美成人精品3d动漫h| 欧美一区二区三区日韩| 在线不卡免费av|