婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > HTML5 Canvas 起步(2) - 路徑

HTML5 Canvas 起步(2) - 路徑

熱門標(biāo)簽:高德地圖標(biāo)注錯(cuò)誤怎么修改 會(huì)聲會(huì)影怎樣做地圖標(biāo)注效果 標(biāo)準(zhǔn)智能外呼系統(tǒng) 洛陽(yáng)市伊川縣地圖標(biāo)注中心官網(wǎng) 搜狗星級(jí)酒店地圖標(biāo)注 地圖標(biāo)注自己去過(guò)的地方 江蘇高頻外呼系統(tǒng)線路 電銷機(jī)器人視頻 平頂山電子地圖標(biāo)注怎么修改
這篇將要介紹一下 Canvas 中的基本圖形。

圖形的基礎(chǔ) - 路徑

在 Canvas 中,所有基本圖形都是以路徑為基礎(chǔ)的,也就是說(shuō),我們?cè)谡{(diào)用 2dContext 的 lineTo、rect 等方法時(shí),其實(shí)就是往已經(jīng)的 context 路徑集合中再添加一些路徑點(diǎn),在最后使用 fill 或 stroke 方法進(jìn)行繪制時(shí),都是依據(jù)這些路徑點(diǎn)來(lái)進(jìn)行填充或畫線。

在每次開始繪制路徑前,都應(yīng)該使用 context.beginPath() 方法來(lái)告訴 Context 對(duì)象開始繪制一個(gè)新的路徑,否則接下來(lái)繪制的路徑會(huì)與之前繪制的路徑疊加,在填充或畫邊框時(shí)就會(huì)出現(xiàn)問(wèn)題。在繪制完成路徑后,可以直接使用 context.closePath() 方法來(lái)關(guān)閉路徑,或者手動(dòng)關(guān)閉路徑。另外,如果在填充時(shí)路徑?jīng)]有關(guān)閉,那么 Context 會(huì)自動(dòng)調(diào)用 closePath 方法將路徑關(guān)閉。

基本路徑方法

1. beginPath, closePath

這兩個(gè)方法在前面已經(jīng)介紹過(guò),分別用來(lái)通知 Context 開始一個(gè)新的路徑和關(guān)閉當(dāng)前的路徑。

在 Canvas 中使用路徑時(shí),應(yīng)該要保持一個(gè)良好的習(xí)慣,每次開始繪制路徑前都要調(diào)用一次 beginPath 方法,否則畫出來(lái)的效果難看不說(shuō),還會(huì)嚴(yán)重影響性能。

在下面這張圖中,左邊的圖形在每次繪制矩形前都調(diào)用了一次 beginPath 來(lái)清除之前的路徑并重新開始繪制新的路徑,而后面的圖形則就只在繪制所有圖形前調(diào)用了一次 beginPath 來(lái)清除路徑,因此,雖然這里是使用的邊框色是 #666,但是右邊的圖形顏色比左邊的深一些,因?yàn)槊看问褂?nbsp;stroke 繪制邊框時(shí),會(huì)把之前的路徑再次繪制一遍,疊加起來(lái)顏色就比原來(lái)深一些。



提示:您可以先修改部分代碼再運(yùn)行

在 Context 中路徑數(shù)較少時(shí),如果不考慮顯示效果,性能上還可以接受,但是如果 Context 中的路徑數(shù)很多時(shí),在開始繪制新路徑前不使用 beginPath 的話,因?yàn)槊看卫L制都要將之前的路徑重新繪制一遍,這時(shí)性能會(huì)以指數(shù)下降。

因此,除非有特殊需要,每次開始繪制路徑前都要調(diào)用 beginPath 來(lái)開始新路徑。

2. 移動(dòng)與直線 moveTo, lineTo, rect



提示:您可以先修改部分代碼再運(yùn)行

void moveTo(in float x, in float y);

在 Canvas 中繪制路徑,一般是不需要指定起點(diǎn)的,默認(rèn)的起點(diǎn)就是上一次繪制路徑的終點(diǎn),因此,如果需要指定起點(diǎn)的話,就需要使用 moveTo 方法來(lái)指定要移動(dòng)到的位置。

void lineTo(in float x, in float y);

lineTo 方法則是繪制一條直接路徑到指定的位置。在調(diào)用完 lineTo 方法后,Context 內(nèi)部的繪制起點(diǎn)會(huì)移動(dòng)到直線的終點(diǎn)。

void rect(in float x, in float y, in float w, in float h);

rect 方法用來(lái)繪制一個(gè)矩形路徑,通過(guò)參數(shù)指定左上角位置以及寬和高。在調(diào)用 rect 后,Context 的繪制起點(diǎn)會(huì)移動(dòng)到 rect 繪制的矩形的左上角。

rect 方法與后面要介紹的 arc 方法與其他路徑方法有一點(diǎn)不同,它們是使用參數(shù)指定起點(diǎn)的,而不是使用 Context 內(nèi)部維護(hù)的起點(diǎn)。

3. 曲線 arcTo, arc, quadraticCurveTo, bezierCurveTo

void arcTo(in float x1, in float y1, in float x2, in float y2, in float radius);

按照 WHATWG 文檔的說(shuō)明,這個(gè)方法是畫一個(gè)與兩條射線相切的的圓弧,兩條射線其中一條為穿過(guò) Context 繪制起點(diǎn),終點(diǎn)為 (x1, y1),另外一條為穿過(guò) (x2, y2),終點(diǎn)為 (x1, y1),這條圓弧為最小的與這兩條射線相切的圓弧。在調(diào)用完 arcTo 方法后,將 圓弧與 射線 (x1, y1)-(x2, y2) 的切點(diǎn)添加到當(dāng)前路徑中,做為下次繪制的起點(diǎn)。

在測(cè)試中發(fā)現(xiàn),F(xiàn)irefox 和 Opera 目前對(duì)這個(gè)方法的支持并不好,只有 Chrome 和 Safari 4 能繪制出正確的路徑。

圖中的的兩條灰色直線是偏移 4 個(gè)像素后的兩條射線所在的位置。


提示:您可以先修改部分代碼再運(yùn)行

void arc(in float x, in float y, in float radius, in float startAngle, in float endAngle, in boolean anticlockwise);

arc 方法用來(lái)繪制一段圓弧路徑,通過(guò)圓心位置、起始弧度、終止弧度來(lái)指定圓弧的位置和大小,這個(gè)方法也依賴于 Context 維護(hù)的繪制起點(diǎn)。而在畫圓弧時(shí)的旋轉(zhuǎn)方向則由最后一個(gè)參數(shù) anticlockwise 來(lái)指定,如果為 true 就是逆時(shí)針,false 則為順時(shí)針。

void quadraticCurveTo(in float cpx, in float cpy, in float x, in float y);

quadraticCurveTo 方法用來(lái)繪制二次樣條曲線路徑,參數(shù)中 cpx 與 cpy 指定控制點(diǎn)的位置,x 和 y 指定終點(diǎn)的位置,起點(diǎn)則是由 Context 維護(hù)的繪制起點(diǎn)。

void bezierCurveTo(in float cp1x, in float cp1y, in float cp2x, in float cp2y, in float x, in float y);

bezierCurveTo 方法用來(lái)繪制貝塞爾曲線路徑,它與 quadraticCurveTo 相似,不過(guò)貝塞爾曲線有兩個(gè)控制點(diǎn),因此參數(shù)中的 cp1x, cp1y, cp2x, cp2y 用來(lái)指定兩個(gè)控制點(diǎn)的位置,而 x 和 y 指定綹的位置。



提示:您可以先修改部分代碼再運(yùn)行

4. fill, stroke, clip

fill 與 stroke 這兩個(gè)方法很好理解,分別用來(lái)填充路徑與繪制路徑線條。

clip 方法用來(lái)給 Canvas 設(shè)置一個(gè)剪輯區(qū)域,在調(diào)用 clip 方法之后的代碼只對(duì)這個(gè)設(shè)定的剪輯區(qū)域有效,不會(huì)影響其他地方,這個(gè)方法在要進(jìn)行局部更新時(shí)很有用。默認(rèn)情況下,剪輯區(qū)域是一個(gè)左上角在 (0, 0),寬和高分別等于 Canvas 元素的寬和高的矩形。

在畫這個(gè)圖時(shí),雖然兩次都是使用 fillRect(0, 0, 100, 100) 填充了一個(gè) 100x100 大小矩形,但是顯示的結(jié)果卻是第二次填充的只是中間的一小塊,這是因?yàn)樵趦纱翁畛渲g使用 clip 方法設(shè)定了剪輯區(qū)域,這樣第二次填充時(shí)只會(huì)影響到所設(shè)定的中間那一小部分區(qū)域。


提示:您可以先修改部分代碼再運(yùn)行

5. clearRect, fillRect, strokeRect

這三個(gè)方法并不是路徑方法,而是用來(lái)直接處理 Canvas 上的內(nèi)容,相當(dāng)于 Canvas 的背景,調(diào)用這三個(gè)方法也不會(huì)影響 Context 繪圖的起點(diǎn)。

要清除 Canvas 上的所有內(nèi)容時(shí),可以直接調(diào)用 context.clearRect(0, 0, width, height) 來(lái)直接清除,而不需要使用路徑方法繪制一個(gè)與 Canvas 同等大小的矩形路徑再使用 fill 方法去清除。

結(jié)語(yǔ)

通過(guò) Canvas 的路徑方法,可以使用 Canvas 處理一些簡(jiǎn)單的矢量圖形,這樣在縮放時(shí)也不會(huì)失真。不過(guò) Canvas 的路徑方法也不是很強(qiáng)大,至少連個(gè)橢圓的路徑都沒(méi)有……

這篇寫得有點(diǎn)長(zhǎng)了,Cnavas 中路徑相關(guān)的內(nèi)容就寫這么多,后面再講講 Canvas 其他的東西。

參考資料

1. The Canvas Element, WHATWG

標(biāo)簽:廣東 常德 阿克蘇 廣西 鄂爾多斯 蚌埠 果洛 松原

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5 Canvas 起步(2) - 路徑》,本文關(guān)鍵詞  HTML5,Canvas,起步,路徑,HTML5,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5 Canvas 起步(2) - 路徑》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于HTML5 Canvas 起步(2) - 路徑的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩av高清在线观看| 国产精品视频yy9299一区| 亚洲欧美日韩中文播放 | 欧日韩精品视频| 韩国精品在线观看| 国内成+人亚洲+欧美+综合在线| 色拍拍在线精品视频8848| 成人成人成人在线视频| 国产一区二区三区不卡在线观看| 国产一级精品在线| 欧美猛男男办公室激情| 日韩小视频在线观看专区| 精品国产乱码久久久久久闺蜜| 精品国产电影一区二区| 国产午夜亚洲精品理论片色戒| 久久精品免视看| 亚洲线精品一区二区三区| 蓝色福利精品导航| 亚洲成av人**亚洲成av**| 国产精品一级片在线观看| 91在线观看视频| 欧美一区二区成人| 国产精品久久久99| 国产精品中文字幕一区二区三区| 欧美视频你懂的| 欧美经典一区二区三区| 久久se这里有精品| 日产国产欧美视频一区精品| 欧洲精品视频在线观看| 欧美激情一二三区| 国产在线观看一区二区| 欧美v日韩v国产v| 国产人成亚洲第一网站在线播放 | 国产精品水嫩水嫩| 国产传媒欧美日韩成人| 久久精品欧美一区二区三区不卡| 国产日本亚洲高清| 丁香另类激情小说| 一区二区三区欧美久久| 91精品国产91久久久久久一区二区 | 亚洲精品国产高清久久伦理二区 | 国产精品污www在线观看| 经典一区二区三区| 成人午夜激情视频| 五月婷婷综合激情| 欧美国产精品劲爆| 欧美视频一区在线观看| 亚洲gay无套男同| 国产精品成人一区二区艾草 | 欧美大尺度电影在线| 裸体歌舞表演一区二区| 亚洲一区二区三区视频在线| 色悠悠亚洲一区二区| 日产国产高清一区二区三区| 欧美国产一区二区| 欧美高清www午色夜在线视频| 国产aⅴ综合色| 青青草原综合久久大伊人精品| 伊人夜夜躁av伊人久久| 欧美亚洲自拍偷拍| 91蝌蚪porny| 精品在线你懂的| 午夜久久久久久久久久一区二区| 中文字幕一区免费在线观看| 日韩女优电影在线观看| 欧美日韩aaa| 欧美这里有精品| 大白屁股一区二区视频| 国产成人夜色高潮福利影视| 综合亚洲深深色噜噜狠狠网站| 国内精品久久久久影院色| 亚洲高清久久久| 亚洲图片一区二区| 亚洲一二三区在线观看| 欧美成人乱码一区二区三区| 色久综合一二码| 麻豆国产精品官网| 国产精品卡一卡二| 欧美国产精品v| 中文字幕视频一区| 亚洲精品欧美激情| 日韩黄色免费网站| 国产精品 欧美精品| 久久91精品国产91久久小草| 国产福利视频一区二区三区| 色吧成人激情小说| 97精品国产露脸对白| 717成人午夜免费福利电影| 精品福利视频一区二区三区| 17c精品麻豆一区二区免费| 香港成人在线视频| av一区二区三区在线| 日韩女优电影在线观看| 1区2区3区精品视频| 激情综合色综合久久| 成人性生交大合| 久久精品亚洲精品国产欧美| 日韩avvvv在线播放| 欧美日韩高清一区二区三区| 亚洲欧美激情小说另类| 久久精品视频免费| 精品国产一区二区国模嫣然| 欧美裸体一区二区三区| 亚洲伊人伊色伊影伊综合网| 91色porny蝌蚪| 欧美日韩国产一二三| 国产精品123| 日韩精品电影在线观看| 中文字幕精品在线不卡| 欧美无砖砖区免费| 成人自拍视频在线观看| 日韩中文字幕亚洲一区二区va在线| 国产精品乱码一区二三区小蝌蚪| 91精品国产综合久久香蕉麻豆| 欧美性大战久久| 午夜精品久久久久影视| 亚洲成人综合网站| 国产三级精品视频| 国产日韩欧美综合在线| 国产精品免费丝袜| 日韩美女视频19| 午夜精品久久久久久久久久久| 亚洲小少妇裸体bbw| 美女爽到高潮91| 国产乱子伦视频一区二区三区| 国产精品中文字幕欧美| 亚洲天堂成人网| 亚洲人成人一区二区在线观看| 亚洲欧美日韩系列| 丝袜美腿亚洲综合| 国产精品一二三区| 成人永久aaa| 欧美午夜理伦三级在线观看| 精品国产成人系列| 精品国产1区2区3区| 91精品国产欧美日韩| 91精品久久久久久蜜臀| 欧美性大战久久| 亚洲尤物在线视频观看| 毛片不卡一区二区| 亚洲成人免费视| 国产精品久久毛片| 老司机精品视频线观看86| 欧美无砖砖区免费| 91年精品国产| 亚洲欧美偷拍卡通变态| 精品无人码麻豆乱码1区2区 | 久久男人中文字幕资源站| 日本一区二区高清| 中文字幕 久热精品 视频在线| 欧美日韩午夜在线| 不卡av在线免费观看| 精品国产乱码久久久久久浪潮| 中文字幕不卡在线播放| 18成人在线观看| 青娱乐精品在线视频| 欧美日韩国产综合一区二区 | 欧美日韩黄色一区二区| 欧美一级午夜免费电影| 中文字幕巨乱亚洲| 亚洲国产精品久久人人爱蜜臀| 丁香另类激情小说| 色乱码一区二区三区88| 欧美一区日本一区韩国一区| 国产亚洲女人久久久久毛片| 九九**精品视频免费播放| 高潮精品一区videoshd| 欧美另类变人与禽xxxxx| 国产日韩精品一区二区浪潮av | 日韩欧美电影在线| 欧美一级在线免费| 亚洲宅男天堂在线观看无病毒 | 亚洲激情在线激情| 国产精品性做久久久久久| 福利一区二区在线观看| 91.xcao| 亚洲影院在线观看| 91国产精品成人| 成人小视频在线观看| 精品美女在线观看| 久久99热99| 精品久久久久久久人人人人传媒| 国产成人免费视频精品含羞草妖精| 51精品秘密在线观看| 日韩理论在线观看| 亚洲1区2区3区视频| wwwwww.欧美系列| 美国十次综合导航| 国产精品高清亚洲| 久久久久国产精品人| 国产风韵犹存在线视精品| 久久久久久久综合色一本| 国产高清久久久久| 国产91丝袜在线18| 中文一区一区三区高中清不卡| 99re这里只有精品首页| 亚洲h在线观看| 26uuu国产日韩综合| 国产不卡高清在线观看视频| 午夜精品福利视频网站|