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

主頁(yè) > 知識(shí)庫(kù) > html5 Canvas畫(huà)圖教程(2)—畫(huà)直線與設(shè)置線條的樣式如顏色/端點(diǎn)/交匯點(diǎn)

html5 Canvas畫(huà)圖教程(2)—畫(huà)直線與設(shè)置線條的樣式如顏色/端點(diǎn)/交匯點(diǎn)

熱門標(biāo)簽:搜狗星級(jí)酒店地圖標(biāo)注 高德地圖標(biāo)注錯(cuò)誤怎么修改 會(huì)聲會(huì)影怎樣做地圖標(biāo)注效果 電銷機(jī)器人視頻 江蘇高頻外呼系統(tǒng)線路 標(biāo)準(zhǔn)智能外呼系統(tǒng) 洛陽(yáng)市伊川縣地圖標(biāo)注中心官網(wǎng) 平頂山電子地圖標(biāo)注怎么修改 地圖標(biāo)注自己去過(guò)的地方
如果你還不知道Canvas是什么,可以看看上一篇.
在學(xué)畫(huà)畫(huà)的時(shí)候,線條是最基本的了,而線條的連接可以組成任何圖形。在Canvas中也是如此。
在開(kāi)始之前我們先拿出畫(huà)布和畫(huà)筆:

復(fù)制代碼
代碼如下:

var cvs = document.getElementById('cvs'); //畫(huà)布
var ctx = cvs.getContext('2d'); // 畫(huà)筆

我們畫(huà)畫(huà)的時(shí)候,落筆點(diǎn)是不固定的,隨時(shí)都會(huì)變。canvas雖然不是通過(guò)手來(lái)決定落筆點(diǎn),但也有一個(gè)方法,就是moveTo。moveTo的作用相當(dāng)于把筆尖提離畫(huà)布,然后移動(dòng)到指定的點(diǎn)(即坐標(biāo))。

復(fù)制代碼
代碼如下:

ctx.moveTo(x,y)

此過(guò)程中不會(huì)畫(huà)出任何圖形,相當(dāng)于你提著筆在畫(huà)布上晃來(lái)晃去。
但晃來(lái)晃去是沒(méi)用的,我們必須開(kāi)始畫(huà)。先畫(huà)最簡(jiǎn)單的:直線
畫(huà)直線的方法即lineTo,他的參數(shù)和moveTo一樣的,都是一個(gè)點(diǎn)。
ctx.lineTo(x,y)當(dāng)然,你畫(huà)線的時(shí)候,落筆點(diǎn)也跟著移動(dòng)了,所以lineTo之后落筆點(diǎn)就變成了他的目標(biāo)點(diǎn)了。

復(fù)制代碼
代碼如下:

ctx.moveTo(100,100);
ctx.lineTo(200,100);

此時(shí)你刷新網(wǎng)頁(yè),會(huì)發(fā)現(xiàn)畫(huà)布上沒(méi)有預(yù)想中的線,什么也沒(méi)有。因?yàn)槲覀冞€少了一個(gè)步驟.lineTo其實(shí)是畫(huà)的一條“路徑”,本身是不可見(jiàn)的。如果要讓他顯示出來(lái),我們必須對(duì)他進(jìn)行“畫(huà)”的操作。
用過(guò)PS的同學(xué),肯定能知道圖形的兩種模式,一種是填充,另一種是描邊。現(xiàn)在我們已經(jīng)畫(huà)了一條線,相當(dāng)于PS中勾了一條路徑,此時(shí)給路徑描一下邊,就能顯示出圖形了。
canvas描邊的方法是stroke().現(xiàn)在讓我們把代碼補(bǔ)全:

復(fù)制代碼
代碼如下:

ctx.moveTo(100,100);
ctx.lineTo(200,100);

ctx.stroke();此時(shí)刷新,就能看到一條線了。當(dāng)然,你也可以連續(xù)繪制出幾百條路徑,再執(zhí)行描邊動(dòng)作,即可一下畫(huà)出幾百條線。現(xiàn)在我們來(lái)用4條線畫(huà)一個(gè)矩形:

復(fù)制代碼
代碼如下:

ctx.moveTo(100,100);
ctx.lineTo(200,100);
ctx.lineTo(200,200);
ctx.lineTo(100,200);
ctx.lineTo(100,100);
ctx.stroke();

這里我們就是先繪出全部路徑,再一次性描邊。
——–作者的抱怨:Canvas繪圖有個(gè)不好的地方就是:基本靠猜,很不直觀。
嚴(yán)重提示:canvas的繪圖過(guò)程(即填充與描邊)是非常消耗資源的,如果想節(jié)省系統(tǒng)資源提高效率,最好是繪制好所有路徑,再一次性填充或描邊圖形。
由上面的圖形我們可以看出,默認(rèn)的線條粗細(xì)是1px,而線條顏色是黑色。當(dāng)然我們可以設(shè)置他們,但奇怪的是設(shè)置線條寬度是lineWidth,而設(shè)置線條樣式的卻叫strokeStyle,為什么不是lineStyle呢?我也不知道。:

復(fù)制代碼
代碼如下:

ctx.lineWidth = 10;
ctx.strokeStyle = 'rgba(255,0,0,0.5)';

上面的代碼把線條寬度設(shè)置成了10px,線條顏色變成了半透明的紅色。

如圖1,刷新一下,好像有點(diǎn)不對(duì)呢!怎么左上角缺了一小塊似得?這不是錯(cuò)覺(jué)。原因嘛要從canvas的線條繪制方式說(shuō)起。
問(wèn)題:如果我畫(huà)的矩形路徑是寬高都是100,此時(shí)我的邊線寬度是10px,那么這個(gè)描了邊的矩形整體寬高是多少?是100+10*2=120嗎?
如果邊線是完全描在路徑外側(cè)的話,那么就是120。但Canvas不是。Canvas中的線條都有一條“中線”,這條中線位于line的絕對(duì)中間,線條的筆畫(huà)以中線向兩側(cè)擴(kuò)展。比如你的線條寬度是1,那么中線就在0.5的位置;寬度是5,那么中線就是在2.5。canvas的圖形在描邊的時(shí)候,都是路徑與line的中線貼合,然后描邊。如圖2:


所以,描邊的時(shí)候線的一半在外側(cè),一半在內(nèi)側(cè),即上面的矩形的整體寬度是100+(10/2)*2,等于110.
也正是因?yàn)檫@個(gè)原因,左上角出現(xiàn)缺角就理所當(dāng)然了。因?yàn)檫@里沒(méi)人畫(huà)。
但為什么其余的角沒(méi)有出現(xiàn)缺口呢?看你的圖不是4個(gè)角都有缺口嗎?
那是因?yàn)椋耶?huà)線的過(guò)程中沒(méi)有把畫(huà)筆“提起來(lái)”,畫(huà)筆是連續(xù)的,即沒(méi)有moveTo過(guò)。不信我們現(xiàn)在來(lái)moveTo一下:

復(fù)制代碼
代碼如下:

ctx.moveTo(100,100);
ctx.lineTo(200,100);
ctx.moveTo(200,100); //注意這里
ctx.lineTo(200,200);
ctx.lineTo(100,200);
ctx.lineTo(100,100);
ctx.lineWidth = 10;
ctx.strokeStyle = 'rgba(255,0,0,0.5)';
ctx.stroke();

我們?cè)佼?huà)第二條線之前moveTo了一下,而且moveTo連坐標(biāo)都沒(méi)變,還是那個(gè)點(diǎn),但刷新后圖形變成了這個(gè)樣子[圖3]:


明白了?因?yàn)槲覀儼压P提起來(lái)了。
現(xiàn)在我們刪掉moveTo,不要糾結(jié)他了,我們來(lái)思考一下如何把左上角那個(gè)缺角給補(bǔ)上?
首先問(wèn)個(gè)問(wèn)題,我們的路徑閉合了嗎?這不是廢話么,我們不是已經(jīng)把路徑繞回原點(diǎn)了么?當(dāng)然算是閉合了!
錯(cuò)!這樣只是讓路徑最后一個(gè)點(diǎn)和起點(diǎn)重合了而已,路徑本身卻沒(méi)有閉合!
Canvas怎么閉合路徑?用closePath().

復(fù)制代碼
代碼如下:

ctx.moveTo(100,100);
ctx.lineTo(200,100);
ctx.lineTo(200,200);
ctx.lineTo(100,200);
ctx.lineTo(100,100);
ctx.closePath();//閉合路徑
ctx.lineWidth = 10;
ctx.strokeStyle = 'rgba(255,0,0,0.5)';
ctx.stroke();

此時(shí)刷新,就是一個(gè)完美的正方形了。圖4:


無(wú)論我們把線條改到多粗————越粗越有人喜歡是吧?————這個(gè)四方形的四個(gè)角都是規(guī)矩的直角,不會(huì)出現(xiàn)圓滑的情況。圓滑的角是什么情況?請(qǐng)看PS中的四方形描邊,圖5:


看到了吧,越粗的邊線,他的角的圓弧越大。
如果我想Canvas里面的邊線也和PS這種一樣,有沒(méi)有辦法呢?當(dāng)然有,就是lineJoin屬性。
lineJoin,意思即線的交匯處,有3個(gè)屬性:miter(默認(rèn),尖角),bevel(斜角),round(圓角),如圖6:
 
毫無(wú)疑問(wèn)我們一下就能明白我們的矩形用的是尖角,所以試著把他改成圓角看看:
圖形變成了這樣,圖7:
 
有點(diǎn)像PS的了吧?
另外,通過(guò)前面圖我們了解到,Canvas的線條兩端是平的,可不可以改呢?畢竟平的不好看。
也是可以的,即lineCap屬性,這個(gè)就是定義線條的端點(diǎn)。lineCap有3個(gè)值:butt(平,默認(rèn)),round(圓),square(方),如圖8
 
看圖就能發(fā)現(xiàn),其實(shí)平頭跟方頭是一樣的,區(qū)別只是平頭沒(méi)有伸出去那么一截。圓頭和方頭都會(huì)伸出去一截,這一節(jié)是多長(zhǎng)呢?就是線條寬度的一半。
你有沒(méi)有想到什么?哈哈,前面的閉合路徑的問(wèn)題,如果我們把lineCap設(shè)為方頭,效果也是一樣的!
但為了保險(xiǎn)起見(jiàn),我們還是要把路徑閉合了,切記!
我還要提醒一下:閉合的路徑?jīng)]有端點(diǎn)!所以閉合的路徑上看不到端點(diǎn)的樣式。
另外:lineCap與lineJoin有點(diǎn)相似,注意不要搞混。
如果你眼尖并且運(yùn)氣不好,你可能會(huì)發(fā)現(xiàn)有時(shí)候1像素的線條不是1像素寬,好像要寬一些,模糊一些。如圖9:

恭喜你!你遇到了一個(gè)不是bug的bug。這個(gè)很特別,我把他放到下一篇文章講吧

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《html5 Canvas畫(huà)圖教程(2)—畫(huà)直線與設(shè)置線條的樣式如顏色/端點(diǎn)/交匯點(diǎn)》,本文關(guān)鍵詞  html5,Canvas,畫(huà)圖,教程,畫(huà),;如發(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畫(huà)圖教程(2)—畫(huà)直線與設(shè)置線條的樣式如顏色/端點(diǎn)/交匯點(diǎn)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于html5 Canvas畫(huà)圖教程(2)—畫(huà)直線與設(shè)置線條的樣式如顏色/端點(diǎn)/交匯點(diǎn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人激情图片网| 亚洲精品ww久久久久久p站| 国内精品国产成人| 亚洲一区在线观看免费| 中文字幕精品在线不卡| 欧美电影免费观看高清完整版在线| 成人激情图片网| 国产一区高清在线| 午夜精品久久一牛影视| 亚洲国产成人午夜在线一区| 日韩午夜激情免费电影| 欧美精品99久久久**| 欧美色综合天天久久综合精品| 国产99精品国产| 依依成人综合视频| 久久精品亚洲麻豆av一区二区 | 欧美在线高清视频| av午夜精品一区二区三区| 国模套图日韩精品一区二区| 蜜桃精品在线观看| 日韩电影在线观看网站| 男人的天堂久久精品| 日韩国产一二三区| 日韩精品电影一区亚洲| 婷婷综合五月天| 视频一区二区三区在线| 日韩精品高清不卡| 精品午夜一区二区三区在线观看 | 337p日本欧洲亚洲大胆精品| 精品成人一区二区| 久久精品一区二区三区不卡牛牛| 国产亚洲精品bt天堂精选| 久久久久久久久一| 中文字幕精品一区二区精品绿巨人| 国产精品久久久久影院老司 | 亚洲欧洲国产日本综合| 玉米视频成人免费看| 一区二区三区成人在线视频| 日韩精品一级中文字幕精品视频免费观看 | 视频一区视频二区中文字幕| 日本一不卡视频| 激情久久久久久久久久久久久久久久| 国产精品18久久久久久久久 | 亚洲色图.com| 亚洲国产精品麻豆| 亚洲一区二区三区在线播放| 亚洲亚洲精品在线观看| 婷婷久久综合九色综合绿巨人| 免费高清在线一区| 成人开心网精品视频| 色偷偷88欧美精品久久久| 欧美日韩国产首页在线观看| 日韩精品专区在线影院重磅| 国产日韩欧美一区二区三区乱码 | 成熟亚洲日本毛茸茸凸凹| 色狠狠色噜噜噜综合网| 精品电影一区二区三区| 亚洲一级二级三级在线免费观看| 喷水一区二区三区| hitomi一区二区三区精品| 欧美精品粉嫩高潮一区二区| 欧美国产成人在线| 日韩精品每日更新| 色综合久久九月婷婷色综合| 欧美tickling挠脚心丨vk| 国产精品网曝门| 日本不卡1234视频| 色吧成人激情小说| 久久美女高清视频| 香蕉成人啪国产精品视频综合网 | 欧美精品在欧美一区二区少妇| 国产欧美一区二区精品秋霞影院| 亚洲国产精品久久久久婷婷884 | 精品综合久久久久久8888| 欧美在线观看禁18| 国产精品激情偷乱一区二区∴| 久久丁香综合五月国产三级网站| 一本色道久久综合亚洲91| 国产精品丝袜一区| 久久国产麻豆精品| 欧美日韩三级一区二区| 亚洲精品欧美专区| 床上的激情91.| 精品国产99国产精品| 亚洲一区免费观看| 色8久久精品久久久久久蜜| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 91黄视频在线观看| 国产精品欧美一级免费| 黄色资源网久久资源365| 欧美老年两性高潮| 一区二区三区在线观看动漫| 99久久亚洲一区二区三区青草 | 麻豆91在线播放| 91麻豆精品国产无毒不卡在线观看 | 久久狠狠亚洲综合| 欧美成人三级在线| 老司机免费视频一区二区| 在线观看成人免费视频| 国产精品电影院| 国产精品一二三四| 日韩一区二区麻豆国产| 美女高潮久久久| 欧美大肚乱孕交hd孕妇| 奇米精品一区二区三区四区| 欧美一级欧美三级在线观看| 日本不卡在线视频| 日韩精品一区国产麻豆| 精品中文字幕一区二区小辣椒 | 免费观看成人鲁鲁鲁鲁鲁视频| 国产欧美日韩不卡| 欧美日本不卡视频| 91久久线看在观草草青青| 麻豆成人在线观看| 理论电影国产精品| 国内精品久久久久影院一蜜桃| 精品一区二区免费视频| 国产一区二区伦理| 麻豆精品视频在线观看视频| 午夜精品一区在线观看| 一区二区三区日韩| 亚洲国产日韩一级| 亚洲v日本v欧美v久久精品| 日韩精品国产精品| 午夜精品福利久久久| 青娱乐精品视频| 久久久精品天堂| 色欧美88888久久久久久影院| 香蕉成人伊视频在线观看| 中文字幕成人网| 国产成人免费视频网站| 中文字幕第一区综合| 日韩欧美成人一区| 韩国av一区二区三区在线观看| 久久精品一级爱片| 首页综合国产亚洲丝袜| 成人av集中营| 日韩精品一区第一页| 国产日韩精品一区二区三区| 一本色道综合亚洲| 美女高潮久久久| 亚洲免费观看视频| 久久网站最新地址| 欧美片在线播放| 成人av网站大全| 另类人妖一区二区av| 亚洲欧美日韩国产综合| 久久一区二区三区国产精品| 在线欧美日韩国产| 国产精品18久久久久| 午夜国产精品一区| 日韩伦理免费电影| 精品日韩成人av| 欧美日韩在线播放一区| 99久久免费精品高清特色大片| 国产一区二区三区免费观看| 偷拍日韩校园综合在线| 国产精品久久久久三级| 亚洲精品一区二区在线观看| 欧美午夜电影在线播放| 色综合天天综合色综合av| 成人黄页毛片网站| 国产乱对白刺激视频不卡| 免费的国产精品| 秋霞国产午夜精品免费视频| 亚洲综合久久久| 亚洲狠狠爱一区二区三区| 亚洲欧洲一区二区三区| 欧美国产精品专区| 久久精品人人做人人爽人人| 欧美电视剧在线观看完整版| 精品免费视频一区二区| 日韩欧美中文字幕制服| 日韩欧美一级精品久久| 欧美大片一区二区| 在线91免费看| 欧美一级免费观看| 日韩精品一区二区三区中文精品| 日韩亚洲欧美在线| 26uuu另类欧美亚洲曰本| 久久久久久久久久久黄色| 国产人成亚洲第一网站在线播放 | 日韩一区二区三区三四区视频在线观看| 91在线视频免费观看| 91免费在线看| 91国偷自产一区二区开放时间| 成人午夜短视频| yourporn久久国产精品| 91视频一区二区三区| 色婷婷综合久久久久中文一区二区| 一本大道久久a久久综合婷婷| 91福利国产成人精品照片| 色狠狠av一区二区三区| 8v天堂国产在线一区二区| 精品成a人在线观看| 国产精品久久久久久久久免费丝袜 | 国产精品12区| 成人亚洲一区二区一| 色999日韩国产欧美一区二区| 欧美肥妇bbw|