小羊教程——HTML5 CANVAS繪制基礎(chǔ)形狀

本節(jié)將用例子講解一下用canvas繪制基礎(chǔ)形狀

前言

<canvas>是HTML5的新增元素脱柱,可以通過javascript在其中繪制圖形俺猿。

<canvas>元素

<canvas id="myCanvas" width="300" height="300">你的瀏覽器也太老了.</canvas>

<canvas>標(biāo)簽只有兩個(gè)屬性 width 和 height底哥,默認(rèn)寬高是300px和150px。我們可以通過css來控制大小,如果css定義的尺寸和畫布的初始大小比例不一致,會(huì)出現(xiàn)拉伸或者壓縮的情況矩肩。

渲染上下文

//獲取canvas元素

var canvas = document.getElementById('myCanvas');

var ctx = null;

//檢查是否支持canvas

if(canvas.getContext){

? ? ?ctx = canvas.getContext('2d);

}else{

? ? ? ?alert('你的瀏覽器也太老了');

}

繪制矩形

canvas只支持一種原生的圖形繪制:矩形。canvas的默認(rèn)填充顏色都是黑色肃续。繪制矩形api有三種方式:

//繪制一個(gè)填充的矩形

fillRect(x, y, width, height);

//繪制一個(gè)矩形的邊框

strokeRect(x, y, width, height);

//清除指定矩形區(qū)域

clearRect(x, y, width, height);

//示例1

//繪制了一個(gè)邊長是200px的正方形

ctx.fillRect(50,50,200,200);

//從正方形的中心擦除了一個(gè)100x100px的正方形

ctx.clearRect(100,100,100,100);

//在擦除區(qū)域內(nèi)生成了80x80px的正方形邊框

ctx.strokeRect(110,110,80,80);

示例1截圖

繪制路徑

繪制路徑的api有:

//新建一條路徑

beginPath();

//移動(dòng)到指定位置

moveTo(x, y);

//繪制一條從當(dāng)前位置到指定位置的直線

lineTo(x, y);

//閉合路徑之后圖形繪制命令重新指向到上下文中

closePath();

//通過線條來繪制圖形

stroke();

//填充路徑

fill();

//圓弧 繪制一個(gè)圓心在(x, y)半徑是radius的圓弧黍檩,anticlockwise為繪制方向,默認(rèn)是順時(shí)針

arc(x, y, radius, startAngle, endAngle, anticlockwise)

//示例2

//開始繪制

ctx.beginPath();

ctx.arc(100,100,50,0,Math.PI*2,true);//繪制臉

ctx.moveTo(135,100);

ctx.arc(100,100,35,0,Math.PI,false);//繪制嘴始锚,順時(shí)針繪制

ctx.moveTo(85,85);

ctx.arc(80,85,5,0,Math.PI*2,true);//繪制左眼

ctx.moveTo(125,85);

ctx.arc(120,85,5,0,Math.PI*2,true);//繪制右眼

ctx.stroke();

示例2截圖
示例2中去掉所有的moveTo之后的效果截圖

//示例3

//繪制填充三角形

ctx.beginPath();

ctx.moveTo(30,30);

ctx.lineTo(30,130);

ctx.lineTo(130,130);

ctx.fill();

//繪制描邊三角形

ctx.beginPath();

ctx.moveTo(40,30);

ctx.lineTo(140,30);

ctx.lineTo(140,130);

ctx.closePath();

ctx.stroke();

示例3截圖

貝塞爾曲線和二次貝塞爾曲線

//繪制貝塞爾曲線刽酱,c1x,c1y為控制點(diǎn),x,y為結(jié)束點(diǎn)

quadraticCurveTo(c1x, c1y, x, y);

//繪制二次貝塞爾曲線瞧捌,c1x,c1y為控制點(diǎn)一棵里,c2x,c2y為控制點(diǎn)二,x,y為結(jié)束點(diǎn)

bezierCurveTo(c1x, c1y, c2x, c2y, x, y);

//示例4

ctx.beginPath();

ctx.moveTo(100,40);

ctx.quadraticCurveTo(40,40,160,160)

ctx.stroke();

示例4截圖

//示例5 二次貝塞爾曲線

ctx.beginPath();

ctx.moveTo(100,40);

ctx.bezierCurveTo(200,40,100,200,250,250);

ctx.stroke();

示例5截圖

小羊教程——HTML5多媒體標(biāo)簽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末察郁,一起剝皮案震驚了整個(gè)濱河市衍慎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌皮钠,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赠法,死亡現(xiàn)場離奇詭異麦轰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)砖织,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門款侵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人侧纯,你說我怎么就攤上這事新锈。” “怎么了眶熬?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵妹笆,是天一觀的道長。 經(jīng)常有香客問我娜氏,道長拳缠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任贸弥,我火速辦了婚禮窟坐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己哲鸳,他們只是感情好臣疑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著徙菠,像睡著了一般讯沈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上懒豹,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天芙盘,我揣著相機(jī)與錄音,去河邊找鬼脸秽。 笑死儒老,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的记餐。 我是一名探鬼主播驮樊,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼片酝!你這毒婦竟也來了囚衔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤雕沿,失蹤者是張志新(化名)和其女友劉穎练湿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體审轮,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肥哎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疾渣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篡诽。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖榴捡,靈堂內(nèi)的尸體忽然破棺而出杈女,到底是詐尸還是另有隱情,我是刑警寧澤吊圾,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布达椰,位于F島的核電站,受9級(jí)特大地震影響街夭,放射性物質(zhì)發(fā)生泄漏砰碴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一板丽、第九天 我趴在偏房一處隱蔽的房頂上張望呈枉。 院中可真熱鬧趁尼,春花似錦、人聲如沸猖辫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啃憎。三九已至芝囤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辛萍,已是汗流浹背悯姊。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贩毕,地道東北人悯许。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像辉阶,于是被迫代替她去往敵國和親先壕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容