欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 使用HTML5 Canvas API控制字體的顯示與渲染的方法

使用HTML5 Canvas API控制字體的顯示與渲染的方法

熱門標簽:西寧智能外呼系統加盟 飛亞外呼系統 貸款電銷人工和機器人哪個好 百應電銷機器人產業 杭州營銷電銷機器人供應商 電視購物電銷外呼系統 電話機器人如何 聯通400電話申請 高德地圖標注賓館位置

API簡介
今天我們開始征戰一個全新的內容——HTML5 Canvas的文本API!要知道,藝術家通常同時也是一個書法家,所以我們要學習寫字,而且是寫出漂亮的字。是不是很有意思?

好了,先預告一下Canvas 文本API有哪些。

屬性 描述
font 設置或返回文本內容的當前字體屬性
textAlign 設置或返回文本內容的當前對其方式
textBaseline 設置或返回在繪制文本時使用的當前文本基線

方法 描述
fillText() 在畫布上繪制“被填充的”文本
strokeText() 在畫布上繪制文本(無填充)
measureText() 返回包含指定文本寬度的對象

看了上面的表格,相信童鞋們以及有了大概的認識。這里,我們先說文本的顯示與渲染,用到了font,fillText()與strokeText()。

基本文本顯示
在Canvas上使用文本,必須得先知道:Canvas上的文本不能使用CSS樣式,雖然font屬性與CSS的屬性相似,但是卻不能夠交換使用。

顯示文本三步走戰略:

1.使用font設置字體。
2.使用fillStyle設置字體顏色。
3.使用fillText()方法顯示字體。
這里的font屬性可以不指定,如果沒有指定字體,則默認自動使用 10px 無襯線體。

下面的代碼簡單顯示了一段文本

JavaScript Code復制內容到剪貼板
  1. <!DOCTYPE html>   
  2. <html lang="zh">   
  3. <head>   
  4.     <meta charset="UTF-8">   
  5.     <title>基本文本顯示</title>   
  6.     <style>   
  7.         body { background: url("./images/bg3.jpg") repeat; }  
  8.         #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
  9.     </style>   
  10. </head>   
  11. <body>   
  12. <div id="canvas-warp">   
  13.     <canvas id="canvas">   
  14.         你的瀏覽器居然不支持Canvas?!趕快換一個吧!!   
  15.     </canvas>   
  16. </div>   
  17.   
  18. <script>   
  19.     window.onload = function(){   
  20.         var canvas = document.getElementById("canvas");   
  21.         canvas.width = 800;   
  22.         canvas.height = 600;   
  23.         var context = canvas.getContext("2d");   
  24.         context.fillStyle = "#FFF";   
  25.         context.fillRect(0,0,800,600);   
  26.   
  27.         //1. 使用`font`設置字體。   
  28.         context.font = "50px serif";   
  29.         //2. 使用`fillStyle`設置字體顏色。   
  30.         context.fillStyle = "#00AAAA";   
  31.         //3. 使用`fillText()`方法顯示字體。   
  32.         context.fillText("《CANVAS--Draw on the Web》",50,300);   
  33.   
  34.     };   
  35. </script>   
  36. </body>   
  37. </html>  

運行結果:

設置文本字體font
在Canvas中設置字體樣式非常的容易,font屬性與CSS的設置字體格式是一樣的,因此只需通過把與CSS兼容的字符串應用到font屬性即可。可以設置字體的樣式、字體的變體、字體的粗細、字號和行高、字體外觀等。

基本格式如下。

CSS Code復制內容到剪貼板
  1. context.font =    
  2. "[font-style] [font-variant] [font-weight]   
  3. [font-size/line-height] [font-family]"  

以上五個參數均可缺省,各個參數間用逗號隔開。

提示:參數用中括號[]包裹起來表示可以缺省。
下面一一來介紹一下這些參數值的意義。

font-style
font-style 屬性定義字體的風格。

描述
normal 默認值。瀏覽器顯示一個標準的字體樣式。
italic 瀏覽器會顯示一個斜體的字體樣式。
oblique 瀏覽器會顯示一個斜體的字體樣式。

后兩者通常情況下看上去是沒啥區別的。但是獲取傾斜效果的方法并不同。italic是使用字體庫中的斜體字,通常一個字體庫是擁有該字體的斜體形式和粗體形式。oblique是直接將字傾斜,如果一個字體庫沒有斜體字那么就不能使用italic,想要獲取傾斜字體只能使用oblique。

font-variant
font-variant 屬性設置小型大寫字母的字體顯示文本,這意味著所有的小寫字母均會被轉換為大寫,但是所有使用小型大寫字體的字母與其余文本相比,其字體尺寸更小。

描述
normal 默認值。瀏覽器顯示一個標準的字體樣式。
small-caps 瀏覽器會顯示小型大寫字母的字體。

看下面的一張圖片就知道這屬性啥意思啦。

就是這樣,上面一行是使用的默認值normal,下面一行使用的是small-caps。效果就是,原本大寫的英文字母不變,小寫的英文字母變成大寫,但是大小不變。

font-weight
font-weight 屬性設置文本的粗細。

描述
normal 默認值。瀏覽器顯示一個標準的字體樣式。
bold 定義粗體字符。
bolder 定義更粗的字符。
lighter 定義更細的字符。
100-900之間的值 定義由粗到細的字符。400等同于normal,而700等同于bold。

font-size
font-size 屬性可設置字體的尺寸。

描述
xx-samll 最小字體
x-small 較小字體
samll 小字體。
medium 缺省值。
large 大字體。
x-large 較大字體。
xx-large 較大字體。
任意數值 單位px,代表字號值

line-height
line-height 屬性設置行間的距離(行高)。不允許使用負值

font-family
font-family 規定元素的字體系列。

使用@font-face自定義字體
HTML5支持常用字體,如果沒有可以使用@font-face擴展字體。但是并不建議使用。

@font-face 能夠加載服務器端的字體文件,讓客戶端顯示客戶端所沒有安裝的字體。目前支持加載EOT與TTF文件。

示例:代碼過長,略XD

我這里下載的字體庫只有A-Z這26個大寫英文字母,所以遇到小寫的自動轉大寫,遇到漢字或者數字它指定用星星符號代替。使用了CSS3中的@font-face即可自定義字體,是不是非常的酷。

文本渲染
同繪制矩形一樣,這里“繪制”文本也給出了兩種方法——fillText()與strokeText()。之所以說一樣,因為這兩個方法也可以通過fillStyle與strokeStyle設置對應的屬性,之前說過的顏色填充、漸變填充、甚至是圖案填充都是可以的。

fillText()與strokeText()的參數表是一樣的,接受4個參數,分別是String,x,y與maxlen,其中String是指要顯示的字符串,之后x與y是指顯示的坐標,最后一個maxlen是可以缺省的數值型參數,代表顯示的最大寬度,單位是像素。如果文本的長度超過了這個maxlen,Canvas就會將顯示文本橫向壓縮。通常為了保證字體的美觀,我們不設置maxlen。

即context.fillText(String,x,y,[maxlen])與context.strokeText(String,x,y,[maxlen])。

下面我們通過一個案例來看看文本渲染的效果。

JavaScript Code復制內容到剪貼板
  1. <!DOCTYPE html>   
  2. <html lang="zh">   
  3. <head>   
  4.     <meta charset="UTF-8">   
  5.     <title>文本渲染</title>   
  6.     <style>   
  7.         body { background: url("./images/bg3.jpg") repeat; }  
  8.         #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
  9.     </style>   
  10. </head>   
  11. <body>   
  12. <div id="canvas-warp">   
  13.     <canvas id="canvas">   
  14.         你的瀏覽器居然不支持Canvas?!趕快換一個吧!!   
  15.     </canvas>   
  16. </div>   
  17.   
  18. <script>   
  19.     window.onload = function(){   
  20.         var canvas = document.getElementById("canvas");   
  21.         canvas.width = 800;   
  22.         canvas.height = 600;   
  23.         var context = canvas.getContext("2d");   
  24.         context.fillStyle = "#FFF";   
  25.         context.fillRect(0,0,800,600);   
  26.   
  27.         context.beginPath();   
  28.         context.font = "50px Verdana";   
  29.         var gradient = context.createLinearGradient(0,0,800,0);   
  30.         gradient.addColorStop("0","magenta");   
  31.         gradient.addColorStop("0.5","blue");   
  32.         gradient.addColorStop("1.0","red");   
  33.         context.fillStyle = gradient;   
  34.         context.strokeStyle = "#00AAAA";   
  35.         context.strokeText("airingursb.github.io", 50, 100);   
  36.         context.fillText("airingursb.github.io", 50, 200);   
  37.   
  38.         //限制寬度   
  39.         context.fillText("airingursb.github.io", 50, 300, 200);   
  40.   
  41.         context.beginPath();   
  42.         var img = new Image();   
  43.         img.src = "./images/bg1.jpg";   
  44.         img.onload = function(){   
  45.             var pattern = context.createPattern(img, "repeat");   
  46.             context.fillStyle = pattern;   
  47.             context.fillText("airingursb.github.io", 50, 400);   
  48.         }   
  49.   
  50.         context.beginPath();   
  51.         context.fillStyle = "#00AAAA";   
  52.         context.fillText("Airing的博客,歡迎訪問", 50, 500);   
  53.     };   
  54. </script>   
  55. </body>   
  56. </html>  

運行結果:

這里第一行使用的是一般顏色的strokeText()方法,第二行使用的是漸變色的fillText()方法,第三行設置了maxlen,第四行給字體填充的是紋理圖案,第五行是廣告……

標簽:晉中 牡丹江 內蒙古 安慶 煙臺 邯鄲 撫州 玉溪

巨人網絡通訊聲明:本文標題《使用HTML5 Canvas API控制字體的顯示與渲染的方法》,本文關鍵詞  使用,HTML5,Canvas,API,控制,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用HTML5 Canvas API控制字體的顯示與渲染的方法》相關的同類信息!
  • 本頁收集關于使用HTML5 Canvas API控制字體的顯示與渲染的方法的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
    • <abbr id="w000q"></abbr>
      <rt id="w000q"></rt>
      日韩精品在线网站| 国产一区二区不卡老阿姨| 91一区二区三区在线观看| 91人妻一区二区三区蜜臀| 久久精品一区二区三区不卡牛牛 | 国产精品无圣光一区二区| 极品少妇xxxx精品少妇| 色无极影院亚洲| 精品国产乱码久久久久久蜜臀| 日韩电影在线观看电影| 在线观看国产网站| 欧美电视剧免费观看| 蜜臀av在线播放一区二区三区| 麻豆国产精品一区| 精品美女在线观看| 久久国产乱子精品免费女| 亚洲av无码一区二区三区人 | 国产婷婷一区二区| 国产一区二区三区高清播放| 日韩欧美视频免费观看| 中文字幕欧美日韩一区| 日韩欧美一级精品久久| 美腿丝袜亚洲综合| 免费黄色在线网址| 国产精品区一区二区三区| av网站一区二区三区| 欧美在线free| 婷婷亚洲久悠悠色悠在线播放| 粉嫩av懂色av蜜臀av分享| 精品少妇一区二区| 国产一区二区在线观看视频| 91麻豆免费视频网站| 亚洲精品你懂的| 日本不卡视频一区| 精品久久99ma| 懂色av一区二区三区免费观看| 色av成人天堂桃色av| 亚洲国产一区二区三区青草影视 | 欧美一区二区人人喊爽| 美女视频黄免费的久久| 亚洲欧美卡通动漫| 亚洲免费观看高清完整版在线观看 | 一区二区三区四区中文字幕| 美女露出粉嫩尿囗让男人桶| 日韩欧美在线一区二区三区| 国内不卡的二区三区中文字幕 | 午夜成人亚洲理伦片在线观看| 国产精品久久一级| 少妇极品熟妇人妻无码| 精品对白一区国产伦| 粉嫩高潮美女一区二区三区| 在线观看亚洲精品视频| 蜜桃av一区二区| 51精品免费网站| 午夜视频在线观看一区二区 | 爱爱免费小视频| 国产精品毛片高清在线完整版| 99re视频精品| 欧美成人激情免费网| 成人av集中营| 日韩三级伦理片妻子的秘密按摩| 国产成人福利片| 欧美高清一级片在线| 国产一本一道久久香蕉| 欧美日韩在线精品一区二区三区激情| 美女国产一区二区三区| 一本色道久久综合亚洲91| 日本中文在线一区| 色综合久久六月婷婷中文字幕| 天堂午夜影视日韩欧美一区二区| 永久免费看片视频教学| 天堂午夜影视日韩欧美一区二区| 国产精品免费人成网站酒店 | 天天av天天翘天天综合网色鬼国产| 欧美性猛交xxxx乱大交少妇| 亚洲国产裸拍裸体视频在线观看乱了| 一区二区三区久久久久| 怡红院av一区二区三区| 999久久久国产| 午夜av电影一区| 色综合久久久网| 韩国v欧美v亚洲v日本v| 欧美精品aⅴ在线视频| 不卡的av网站| 国产亚洲精品免费| 疯狂揉花蒂控制高潮h| 亚洲美女视频在线| 韩国一级黄色录像| 美美哒免费高清在线观看视频一区二区 | 一级欧美一级日韩片| 亚洲同性同志一二三专区| a天堂中文字幕| 亚洲bdsm女犯bdsm网站| 国产高潮国产高潮久久久91| 黑人巨大精品欧美一区| 91精品欧美久久久久久动漫 | 久久久精品日韩欧美| 亚洲中文字幕无码一区| 亚洲乱码国产乱码精品精小说| 国产麻豆a毛片| 精品亚洲国产成人av制服丝袜 | 免费人成黄页网站在线一区二区| 欧美在线一二三四区| 国产91精品久久久久久久网曝门| 欧美成人一区二区三区片免费| 第一页在线视频| 亚洲人成7777| 天天做夜夜爱爱爱| 黄网站免费久久| 精品女同一区二区| 全黄一级裸体片| 奇米精品一区二区三区在线观看| 欧美老肥妇做.爰bbww| 人妻体体内射精一区二区| 最新中文字幕一区二区三区| 三级黄色录像视频| 国产精品99久久久久久久vr| 久久女同精品一区二区| 欧洲av一区二区三区| 蜜桃视频一区二区三区在线观看| 欧美一级在线视频| 色噜噜在线观看| 日韩不卡在线观看日韩不卡视频| 在线播放视频一区| 亚洲自拍偷拍精品| 天天av天天翘天天综合网色鬼国产| 欧美久久一二区| 亚洲av成人片无码| 天涯成人国产亚洲精品一区av| 日韩一区和二区| 一级性生活大片| 久久国产综合精品| 国产日韩亚洲欧美综合| 成人精品一二三区| 成人激情小说网站| 亚洲日本va午夜在线电影| 在线看国产一区| 91成人在线观看喷潮蘑菇| 午夜精品久久久久久久蜜桃app| 91麻豆精品国产自产在线 | 卡通动漫亚洲综合| www.综合网.com| 一区二区在线观看视频| 欧美日韩在线播放三区| 国产精久久久久| 日韩电影免费在线| 久久夜色精品国产噜噜av| 亚洲激情图片网| 91美女在线看| 天天亚洲美女在线视频| 亚洲精品一线二线三线无人区| 在线观看免费黄色网址| 成人激情动漫在线观看| 亚洲一区在线观看视频| 欧美一级理论片| youjizz亚洲女人| 99九九99九九九视频精品| 亚洲一区二区av电影| 日韩精品一区二区三区中文不卡 | 97se亚洲国产综合自在线观| 夜夜夜精品看看| 精品美女一区二区| 免费成人深夜夜行网站| 日本人dh亚洲人ⅹxx| 青青草原综合久久大伊人精品优势| 久久婷婷综合激情| 色偷偷成人一区二区三区91| 中国极品少妇xxxx| 国产资源在线一区| 亚洲精品成人少妇| 日韩你懂的电影在线观看| 三级黄色免费观看| 精品人妻二区中文字幕| 国产一区二区主播在线| 亚洲黄色片在线观看| 日韩精品资源二区在线| 东方av正在进入| 超碰97在线资源站| 成人综合激情网| 日产欧产美韩系列久久99| 国产精品色呦呦| 欧美精品三级在线观看| 性色国产成人久久久精品| xxxx视频在线观看| 国产美女一区二区三区| 亚洲一区二区视频| 国产三级久久久| 欧美一级国产精品| 日韩欧美中文字幕视频| www.色多多| 99精品国产视频| 精品一二线国产| 午夜精品影院在线观看| 国产精品久久久久aaaa樱花| 日韩一区二区视频| 在线观看国产精品网站| 岛国片在线免费观看| 中文字幕一区二区人妻电影丶| 福利电影一区二区| 免费高清在线一区|