成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > canvas學(xué)習(xí)總結(jié)三之繪制路徑-線段

canvas學(xué)習(xí)總結(jié)三之繪制路徑-線段

熱門(mén)標(biāo)簽:高德地圖標(biāo)注商戶怎么標(biāo) ok電銷機(jī)器人 如何查看地圖標(biāo)注 欣鼎電銷機(jī)器人 效果 黃石ai電銷機(jī)器人呼叫中心 地圖標(biāo)注軟件打印出來(lái) 惡搞電話機(jī)器人 電話機(jī)器人技術(shù) 智能電銷機(jī)器人被禁用了么

Canvas繪圖環(huán)境中有些屬于立即繪制圖形方法,有些繪圖方法是基于路徑的。

立即繪制圖形方法僅有兩個(gè)strokeRect(),fillRect(),雖然strokezText(),fillText()方法也是立即繪制的,但是文本不算是圖形。

基于路徑的繪制系統(tǒng) 

大多數(shù)繪制系統(tǒng),如:SVG(Scalable Verctor Graphics, 可縮放的矢量圖形),Adobe Illustrator等,都是基于路徑的,

使用這些繪制系統(tǒng)時(shí),你需要先定義一個(gè)路徑,然后再對(duì)其進(jìn)行描邊或填充,也可以描邊加填充這樣圖形才能顯示出來(lái)。

Canvas中的三種繪制方式:

繪制一條線段

Canvas繪圖環(huán)境中,線段也是基于路徑繪制的,稱為線性路徑,創(chuàng)建線性路徑的方法:moveTO()與lineTo(),在創(chuàng)建路徑之后調(diào)用stroke()方法,才能在Canvas中畫(huà)出線段出來(lái)。

這就是前面我們所說(shuō)的基于路徑的繪制方法,必須對(duì)其進(jìn)行描邊或者填充;

通常兩點(diǎn)連一線因此繪制線段非常簡(jiǎn)單,通過(guò)moveTO()指定線的起點(diǎn),通過(guò)lineTo()移動(dòng)到另一個(gè)點(diǎn)。

function drawLine(){
    cxt.moveTo(50, 50);
    cxt.lineTo(100, 100);
}

然而這樣我們?cè)诋?huà)布中是看不見(jiàn)線段的,前面我們說(shuō)到基于路徑的繪制方法,必須要描邊或者填充。所以要想看到結(jié)果,我們必須還要使用stroke()方法。

因此我們把方法修改成下面這樣就會(huì)繪制出一條線段

function drawLine(){
    cxt.moveTo(50, 50);
    cxt.lineTo(200, 200);
    cxt.stroke();
}

我們只使用lineTo()也是能在畫(huà)布中繪制出線段的,我們把上面的代碼改成如下面所示,效果也是一樣的

function drawLine(){
    cxt.lineTo(50, 50);
    cxt.lineTo(200, 200);
    cxt.stroke();
}

總結(jié)下moveTo()與lineTo()的用法

  • moveTo(x,y): 將筆觸移動(dòng)到指定的坐標(biāo)x以及y上,向當(dāng)前路徑中增加一條子路徑,該方法不會(huì)清除當(dāng)前路徑中的任何子路徑。
  • lineTo(x,y): 繪制一條從當(dāng)前位置到指定x以及y位置的直線,如果當(dāng)前路徑中沒(méi)有子路徑,那么這個(gè)方法的行為與moveTo()一樣。如果當(dāng)前路徑中存在子路徑,此方法會(huì)將你所指定的這個(gè)點(diǎn)加入子路徑中。

改變線段的樣式

改變線段的寬度

function= 14;
    cxt.lineTo(50, 50);
    cxt.lineTo(200, 200);
    cxt.stroke();
}

改變線段的顏色

function drawLine(){
    cxt.lineWidth = 14;
    cxt.strokeStyle = 'green';
    cxt.lineTo(50, 50);
    cxt.lineTo(200, 200);
    cxt.stroke();
}

 

我們還可以利用CanvasGradient對(duì)象或者CanvasPattern對(duì)象給線段添加漸變色或圖案

function drawLine(){
    cxt.lineWidth = 14;
    var gradient = cxt.createLinearGradient(0, 0, canvas.width/2, canvas.height/2);
    gradient.addColorStop(0, 'blue');
    gradient.addColorStop(0.5, 'purple');
    gradient.addColorStop(1, 'yellow');
    cxt.strokeStyle = gradient;
    cxt.lineTo(50, 50);
    cxt.lineTo(200, 200);
    cxt.stroke();
}

 beginPath()與closePath()

從上面canvas中的三種繪制方式中我們可以看出,第二行的弧形路徑是開(kāi)放路徑,最后一行的弧形是封閉路徑。那么封閉的路徑是怎么實(shí)現(xiàn)的呢?

下面我們來(lái)看看canvas中路徑繪制中兩個(gè)比較重要的方法

  • beginPath(): 清除當(dāng)前所有子路徑,以此來(lái)重置當(dāng)前路徑,重新規(guī)劃一條路徑。
  • closePath(): 用于封閉某段開(kāi)放路徑。不是必需的,如果圖形是已經(jīng)閉合了的,即當(dāng)前點(diǎn)為開(kāi)始點(diǎn),該函數(shù)什么也不做。

先繪制出一條折線

function drawLine(){
    cxt.strokeStyle = 'green';
    cxt.lineWidth = 2;
    cxt.moveTo(50, 50);
    cxt.lineTo(50, 150);
    cxt.lineTo(150, 150);
    cxt.stroke();
}

修改上面例子中的代碼在代碼中添加beginPath()與closePath()方法

function drawLine(){
    //描邊三角形
    cxt.strokeStyle = 'green';
    cxt.lineWidth = 2;
    cxt.beginPath();
    cxt.moveTo(50, 50);
    cxt.lineTo(50, 150);
    cxt.stroke();
    cxt.beginPath();
    cxt.lineTo(150, 150);
    cxt.lineTo(150, 250);
    cxt.stroke();
  cxt.closePath();
}

可以看出我們?cè)诋?huà)布中繪制了兩條路徑

注意:調(diào)用beginPath()之后,或者canvas剛建的時(shí)候,第一條路徑構(gòu)造命令通常被視為是moveTo()。所以我們?cè)诶L制圖形的時(shí)候一定要先使用beginPath()。

我們繼續(xù)修改我們的代碼

function drawLine(){
    //描邊三角形
    cxt.strokeStyle = 'green';
    cxt.lineWidth = 2;
    cxt.beginPath();
    cxt.moveTo(50, 50);
    cxt.lineTo(50, 150);
    cxt.lineTo(150, 150);
    cxt.closePath();
    cxt.stroke();
    //折線
    cxt.translate(150, 0);
    cxt.strokeStyle = 'red';
    cxt.lineWidth = 2;
    cxt.beginPath();
    cxt.moveTo(50, 50);
    cxt.lineTo(50, 150);
    cxt.lineTo(150, 150);
    cxt.stroke();
    cxt.closePath();
    //綠色填充三角形
    cxt.translate(150, 0);
    cxt.fillStyle = 'green';
    cxt.lineWidth = 2;
    cxt.beginPath();
    cxt.moveTo(50, 50);
    cxt.lineTo(50, 150);
    cxt.lineTo(150, 150);
    cxt.fill();
    cxt.closePath();
    //紅色填充三角形
    cxt.translate(150, 0);
    cxt.fillStyle = 'red';
    cxt.lineWidth = 2;
    cxt.beginPath();
    cxt.moveTo(50, 50);
    cxt.lineTo(50, 150);
    cxt.lineTo(150, 150);
    cxt.closePath();
    cxt.fill();
}

從上面的例子我們可以看出closePath()的位置不同,也會(huì)影響我們的圖形

注意:當(dāng)你調(diào)用fill()函數(shù)時(shí),所有沒(méi)有閉合的形狀都會(huì)自動(dòng)閉合,所以此時(shí)closePath()函數(shù)不是必須的。

但是調(diào)用stroke():如果你在stroke()方法之前只用closePath()會(huì)形成閉合路徑,如果在stroke()方法之后調(diào)用closePath()方法,此時(shí)圖形已經(jīng)繪制完成,當(dāng)前的繪制路徑已經(jīng)關(guān)閉,所以closePath()方法不起作用。

線段與像素邊界

先來(lái)看一個(gè)例子

function drawLine(){
    //描邊三角形
    cxt.lineWidth = 1;
    cxt.beginPath();
    cxt.moveTo(50, 50);
    cxt.lineTo(450, 50);
    cxt.stroke();
    cxt.beginPath();
    cxt.moveTo(50.5, 150.5);
    cxt.lineTo(450.5, 150.5);
    cxt.stroke();
}

從圖中我們可以看出,我們將兩條線段的lineWidth都是設(shè)置為1像素,但是上面的線段畫(huà)出的卻是兩像素。 

如果你在某2個(gè)像素的邊界處繪制一條1像素寬的線段,那么該線段實(shí)際會(huì)占據(jù)2個(gè)像素的寬度;

因?yàn)楫?dāng)你在像素邊界處繪制一條1像素寬度的垂直線段時(shí),canvas的繪圖環(huán)境對(duì)象會(huì)試著將半個(gè)像素畫(huà)在邊界中線的右邊,將另外半個(gè)像素畫(huà)在邊界中線的左邊。

然而,在一個(gè)整像素的范圍內(nèi)繪制半個(gè)像素寬的線段是不可能的,所以在左右兩個(gè)方向上的半個(gè)像素都被擴(kuò)展為1個(gè)像素。

另外一方面,繪制在兩個(gè)像素之間,這樣的話,中線左右兩端的那半個(gè)像素就不會(huì)延伸,它們結(jié)合起來(lái)恰好占據(jù)1個(gè)像素的寬度。所以說(shuō),如果要繪制一條真正1像素寬度的線段,你必須將該線段繪制在某兩個(gè)像素之間

網(wǎng)格的繪制

既然我們已經(jīng)明白了如何繪制真正的1像素的線段,那我們就開(kāi)始繪制網(wǎng)格

function drawLine(stepx, stepy){
    cxt.lineWidth = 0.5;
    cxt.strokeStyle = 'green';
    //繪制豎線
    for(var i= stepx + 0.5; i< cxt.canvas.width; i+= stepx){
        cxt.beginPath();
        cxt.moveTo(i, 0);
        cxt.lineTo(i, cxt.canvas.height);
        cxt.stroke();
    }
    //繪制橫線
    for(var i= stepy + 0.5; i< cxt.canvas.height; i+= stepy){
        cxt.beginPath();
        cxt.moveTo(0, i);
        cxt.lineTo(cxt.canvas.width, i);
        cxt.stroke();
    }
}
drawLine(10, 10);

上面例子中我們將線段繪制在兩個(gè)像素之間的像素上,而且繪制出來(lái)的線段僅有0.5像素寬,

雖說(shuō)canvas規(guī)范沒(méi)有明文規(guī)定,不過(guò)所有瀏覽器的Canvas實(shí)現(xiàn)都使用了“抗鋸齒”技術(shù),以便創(chuàng)建出“亞像素”線段的繪制效果來(lái)

總結(jié)

本節(jié)內(nèi)容主要講解canvas中路徑中線性路徑的繪制方法,主要是利用 moveTo()定義起點(diǎn),lineTo()定義終點(diǎn),stroke()描繪當(dāng)前路徑。這三個(gè)方法繪制線段

canvas中繪制路徑有兩個(gè)重要的方法,beginPath()與closePath()。繪制圖形之前先調(diào)用beginPath()是繪制多個(gè)圖形必要的步驟。

closePath()在使用fill()時(shí)是可以省略的,而且還要注意closePath()方法的調(diào)用位置。

繪制線段時(shí)我們可以使用 lineWidth改變線段的寬度,strokeStyle改變線段的顏色。

弄清楚線段的像素邊界,這樣我們才能繪制出真正的1像素線寬的線段。

對(duì)canvas繪制圖形感興趣的同學(xué),請(qǐng)持續(xù)關(guān)注后續(xù)更新,如有不對(duì)的地方也請(qǐng)指出并多多交流。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:盤(pán)錦 阿壩 萍鄉(xiāng) 金昌 中山 赤峰 聊城 綏化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《canvas學(xué)習(xí)總結(jié)三之繪制路徑-線段》,本文關(guān)鍵詞  canvas,學(xué)習(xí),總結(jié),三之,繪制,;如發(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)文章
  • 下面列出與本文章《canvas學(xué)習(xí)總結(jié)三之繪制路徑-線段》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于canvas學(xué)習(xí)總結(jié)三之繪制路徑-線段的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产成人精品免费一区二区| 91九色视频在线观看| 香蕉视频在线网址| 亚洲自拍偷拍综合| 国产精品久久久久av蜜臀| 亚洲最新av在线网站| 欧美中文字幕一二三区视频| 久操成人在线视频| 欧美男男video| 在线观看免费视频高清游戏推荐| 欧美性aaa| 欧美一级大胆视频| 国产日韩影视精品| 亚洲丁香婷深爱综合| 日韩精品免费播放| 欧美日韩国产综合草草| 久久久久久五月天久久久久久久久| 中文字幕在线观看视频网站| 国产成人精品一区二区免费视频| 91高潮大合集爽到抽搐| 日韩欧美电影一区| 欧美精美视频| 欧美v国产在线一区二区三区| 午夜精品久久久久久久久久久| 性欧美18xxxhd| 国产精品日韩精品| 亚洲国产乱码最新视频| 91超碰免费在线| 色影院视频在线| 少妇视频一区| 羞羞影院体验区| 欧美资源在线观看| 国产免费拔擦拔擦8x在线播放| 久久一区二区视频| 亚洲精品欧美| 天堂中文av在线资源库| 另类激情视频| 国产精品系列视频| 2019中文字幕在线观看| 国产69精品久久久久久久| 免费黄色片在线观看| 一夜七次郎国产精品亚洲| 91美女片黄在线观看| 欧美激情一区二区视频| 久久久久久久久久久久久久av| 亚洲第一精品区| 亚洲一级理论片| 亚洲欧美日韩国产综合精品二区| 亚洲成a人片在线观看中文| 午夜成在线www| 欧美成人综合一区| 国产欧美一区二区精品忘忧草| 国产无套粉嫩白浆内谢| 日韩成人免费在线视频| 久久最新视频| 狠狠躁天天躁日日躁欧美| 无码小电影在线观看网站免费| 中文字幕视频在线免费观看| 少妇精品久久久一区二区三区| 中文字幕佐山爱一区二区免费| 国产成人精品免费久久久久| 免费三级欧美电影| 中文字幕第21页| 日韩欧美一区二区三区在线观看| av片在线观看免费| 国产综合色区在线观看| 欧美另类交人妖| 精品久久久久久久久久久下田| 3d动漫啪啪精品一区二区免费| 国产日韩视频在线观看| 国产免费黄色| 又色又爽又黄18网站| 国产成人精品日本亚洲专区61| 亚洲欧美一级| 欧亚av在线| 国产99久久久久久免费看农村| 99在线观看免费视频精品观看| 黄色大片中文字幕| 东京热无码av男人的天堂| 亚洲精品免费在线播放| 日韩一二区视频| 精品免费av一区二区三区| 国产精品一二三产区| 4438欧美| 日韩三级电影视频| 自拍在线播放| 国产精品6699| 日本爱爱免费视频| 伦理片一区二区三区| 97人妻精品一区二区三区视频| 乌克兰美女av| 中文字幕av网| 色哟哟国产精品色哟哟| 久久99日本精品| www.亚洲成人网| 伊人精品久久久久7777| 中文字幕第一页在线视频| 桃乃木香奈av在线| 婷婷丁香激情网| 亚洲人成电影| 孩xxxx性bbbb欧美| 少妇太紧太爽又黄又硬又爽| 综合网插菊花| 日韩精品成人一区二区三区| 精品国产区一区| 在线免费精品视频| 国产在线观看第一页| 国产成人一二片| 亚洲激情av| 调教在线观看| 精品亚洲aⅴ乱码一区二区三区| 精品久久亚洲一级α| 青青草免费在线观看| 97人摸人人澡人人人超一碰| 桃色一区二区| 久久精品视频8| 国产精品嫩草影视| 2019中文字幕视频| 寂寞少妇一区二区三区| 亚洲午夜精品久久久久久久久久久久| 高清在线不卡av| 欧美日韩一区二区区| www.狠狠lu| 国产一区二区无遮挡| 日韩av片在线看| 99久久久久久久久久| 午夜精品久久久久久久久久久久久| 欧美日韩在线不卡视频| 欧美成人亚洲成人日韩成人| 国产探花视频在线观看| 久久久久久久久久电影| 久久精品国产亚洲av香蕉| 亚洲久久中文字幕| 亚洲a在线播放| 久久精品一区| 青青草成人免费| 欧产日产国产精品98| 香蕉97视频观看在线观看| 亚洲免费在线| 无码人妻av免费一区二区三区| 亚洲欧洲一区| 婷婷在线精品视频| 欧美另类黑人巨大videos| 国产精品视频yy9299一区| 国产免费一区二区三区最新不卡| 日韩特黄一级片| 超碰在线成人| 欧美成人全部免费| 国产日本在线视频| 亚洲精品国精品久久99热| 2018国产在线| 亚洲色婷婷综合开心网| 四虎国产精品永久| 日韩1区2区3区| 亚洲精品午夜国产va久久成人| 日产国产欧美视频一区精品| 亚洲激情图片| 亚洲天堂影视av| 涩涩涩在线视频| 麻豆tv入口在线看| 写真福利片hd在线播放| 4虎在线播放1区| 日本韩国精品一区二区| 91性高湖久久久久久久久_久久99| 日韩人体视频一二区| 三上悠亚在线观看| 精品97人妻无码中文永久在线| 日本精品一二三区| 日韩欧美亚洲另类| 午夜精品久久久久久久星辰影院| 国产成人在线视频观看| 亚洲a在线观看| 国产福利图片| 69亚洲精品久久久蜜桃小说| 欧美一区二区精品久久911| 天天射天天操天天干| 在线播放国产一区二区三区| 国产成人精品一区二区| 久久香蕉精品视频| 一个人免费播放在线视频看片| 国产毛片精品视频| 天堂资源在线亚洲视频| 欧美一区二区三区在| 美女福利一区二区三区| 无码专区aaaaaa免费视频| 欧美精品二区三区四区免费看视频| 国产一区二区三区四区五区在线| 久久人人爽人人爽人人片av高请| 日本免费在线视频| 正义之心1992免费观看全集完整版| 偷拍自拍在线视频| 欧美r级在线| 欧美特黄级在线| 国产激情一区二区三区在线观看| 亚洲在线一区二区三区| 久久福利电影| 黑人巨大精品欧美一区二区| av综合在线播放| 欧美在线一区二区三区四区| 亚洲国产图片| 久久亚洲道色| 99re热视频在线| 午夜视频在线免费播放| 97影院手机在线观看| 一区二区三区自拍视频| 国产精品一区二区三区四区五区| 国产69精品久久app免费版| 激情亚洲另类图片区小说区| 色噜噜在线网| 国产av一区二区三区精品| 99在线精品视频在线观看| 精品国产无码在线| 欧美不卡激情三级在线观看| 99re66热这里只有精品4| 久久精品波多野结衣| 日韩精品乱码免费| 91中文字幕在线视频| 国产精品一区二区人人爽| 日韩伦理视频| 精品九九久久| 99国产精品免费| 欧美日韩大片一区二区三区| 国产免费一区二区视频| 国产日韩欧美| 中文在线观看免费高清| 久久不见久久见国语| 欧美国产另类| 美女视频一区二区三区在线| 亚洲精一区二区三区| 亚洲欧美另类色图| 精品国产乱码久久久久久1区2匹| 欧美人与禽性xxxxx杂性| 欧美国产先锋| 久久久久久久久久99| 欧美年轻男男videosbes| 日批视频在线看| 人妖欧美一区二区| 男女无套免费网站| 日本japanese极品少妇| 91theporn国产在线观看| 中文字幕国产日韩| 欧美特黄一级大片| 国产成人亚洲精品无码h在线| 日韩麻豆第一页| 牛人盗摄一区二区三区视频| 成人看片网站| 亚洲三级网站| 大伊香蕉精品在线品播放| 欧美美女15p| ...av二区三区久久精品| 欧美激情第一页在线观看| 美女网站免费观看视频| 91在线免费观看网站| 国产最新视频在线观看| 亚洲色欲久久久综合网东京热| 久久久久中文字幕2018| 国产三级在线播放| 日本一区视频在线播放| 国产国产精品人在线视| 国产精品综合在线视频| 午夜欧美2019年伦理| 激情视频网站在线观看| 亚洲黄页视频免费观看| 国产色视频一区二区三区qq号| 午夜精品一区二区三区电影天堂| 91传媒免费视频| 91精品人妻一区二区三区蜜桃2| 日本黄色三级大片| 亚洲自拍一区在线观看| 91免费人成网站在线观看18| 日韩欧美国产精品综合嫩v| 日本免费一区二区三区最新| 久久久久国产一区二区三区| 国产精品视频一区二区图片| 免费一级欧美片在线播放| 国产精品揄拍500视频| 一区二区三区视频在线观看免费| 成人两性免费视频| 日本少妇一区| 日韩免费高清在线观看| 欧美高清自拍一区| 好吊色在线视频| 国产性色视频| 一区在线免费| 成人手机在线| 无码h黄肉3d动漫在线观看| 国产综合久久久久久久久久久久| 国产成人精品视频在线观看| av网站无病毒在线| 色欲av伊人久久大香线蕉影院| 成人无码av片在线观看| av噜噜在线观看| 亚洲精品视频一区二区| 亚洲精品一区二区毛豆| sm久久捆绑调教精品一区| 不卡视频一区二区| qvod激情图片| 快灬快灬一下爽蜜桃在线观看| 亚洲国产精久久久久久久| 精品国产美女在线| 9999在线精品视频| 国产又大又长又粗| 亚洲精品日本| 日韩欧美中文免费| 久久人体大尺度| 亚洲调教一区| 同心难改在线观看| 日韩欧美一区二区免费| 日韩中文字幕高清| 最新中文乱码字字幕在线| 1024精品久久久久久久久| caoporn成人免费视频在线| 中文字幕av一区二区三区高| 蜜桃av综合| jizz日本18| 国产乱对白刺激视频不卡| 国产一区美女在线| 2021国产视频| 欧美日韩性生活视频| 555夜色666亚洲国产免| 一区二区三国产精华液| 国产亚洲欧美在线| 91香蕉在线视频| 麻豆精品国产传媒| 国产精品高清网站| 国产精品高潮呻吟视频| 性欧美极品另类| 国产美女久久久久|