初識canvas(二)

canvas的用途之繪制矩形

繪制矩形

矩形是唯一一種可以直接在 2D 上下文中繪制的形狀。與矩形有關(guān)的方法包括fillRect()、strokeRect()和 clearRect()。這三個方法都能接收 4 個參數(shù):矩形的 x 坐標、矩形的 y 坐標、矩形寬度和矩形高度页屠。這些參數(shù)的單位都是像素。

1.fillRect()

fillRect()方法在畫布上繪制的矩形會填充指定的顏色蓖柔。填充的顏色通過 fillStyle 屬性指定辰企,比如:

var drawing = document.getElementById("drawing");
//確定瀏覽器支持<canvas>元素
if (drawing.getContext){
 var context = drawing.getContext("2d");
 /*
 * 根據(jù) Mozilla 的文檔
 * http://developer.mozilla.org/en/docs/Canvas_tutorial:Basic_usage
 */
 //繪制紅色矩形
 context.fillStyle = "#ff0000";
 context.fillRect(10, 10, 50, 50);
 //繪制半透明的藍色矩形
 context.fillStyle = "rgba(0,0,255,0.5)";
 context.fillRect(30, 30, 50, 50);
}

以上代碼首先將 fillStyle 設(shè)置為紅色,然后從(10,10)處開始繪制矩形况鸣,矩形的寬和高均為 50 像
素牢贸。然后,通過 rgba()格式再將 fillStyle 設(shè)置為半透明的藍色镐捧,在第一個矩形上面繪制第二個矩形潜索。結(jié)果就是可以透過藍色的矩形看到紅色的矩形。

2.strokeRect()

strokeRect()方法在畫布上繪制的矩形會使用指定的顏色描邊懂酱。描邊顏色通過 strokeStyle 屬性指定竹习。比如:

var drawing = document.getElementById("drawing");
//確定瀏覽器支持<canvas>元素
if (drawing.getContext){
 var context = drawing.getContext("2d");
 /*
 * 根據(jù) Mozilla 的文檔
 * http://developer.mozilla.org/en/docs/Canvas_tutorial:Basic_usage
 */
 //繪制紅色描邊矩形
 context.strokeStyle = "#ff0000";
 context.strokeRect(10, 10, 50, 50);
 //繪制半透明的藍色描邊矩形
 context.strokeStyle = "rgba(0,0,255,0.5)";
 context.strokeRect(30, 30, 50, 50);
}

以上代碼繪制了兩個重疊的矩形。不過列牺,這兩個矩形都只有框線整陌,內(nèi)部并沒有填充顏色。描邊線條的寬度由 lineWidth 屬性控制,該屬性的值可以是任意整數(shù)泌辫。另外并炮,通過 lineCap 屬性可以控制線條末端的形狀是平頭、圓頭還是方頭("butt"甥郑、"round"或"square"),通過 lineJoin 屬性可以控制線條相交的方式是圓交荤西、斜交還是斜接("round"澜搅、"bevel"或"miter")。

3.clearRect()

clearRect()方法用于清除畫布上的矩形區(qū)域邪锌。本質(zhì)上勉躺,這個方法可以把繪制上下文中的某一矩形區(qū)域變透明。通過繪制形狀然后再清除指定區(qū)域觅丰,就可以生成有意思的效果饵溅,例如把某個形狀切掉一塊。下面看一個例子妇萄。

var drawing = document.getElementById("drawing");
//確定瀏覽器支持<canvas>元素
if (drawing.getContext) {
  var context = drawing.getContext("2d");
  /*
   * 根據(jù) Mozilla 的文檔
   * http://developer.mozilla.org/en/docs/Canvas_tutorial:Basic_usage
   */
  //繪制紅色矩形
  context.fillStyle = "#ff0000";
  context.fillRect(10, 10, 50, 50);
  //繪制半透明的藍色矩形
  context.fillStyle = "rgba(0,0,255,0.5)";
  context.fillRect(30, 30, 50, 50);
  //在兩個矩形重疊的地方清除一個小矩形
  context.clearRect(40, 40, 10, 10);
}

參考鏈接:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜕企,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冠句,更是在濱河造成了極大的恐慌轻掩,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懦底,死亡現(xiàn)場離奇詭異唇牧,居然都是意外死亡,警方通過查閱死者的電腦和手機聚唐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門丐重,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杆查,你說我怎么就攤上這事扮惦。” “怎么了亲桦?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵径缅,是天一觀的道長。 經(jīng)常有香客問我烙肺,道長纳猪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任桃笙,我火速辦了婚禮氏堤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己鼠锈,他們只是感情好闪檬,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著购笆,像睡著了一般粗悯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上同欠,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天样傍,我揣著相機與錄音,去河邊找鬼铺遂。 笑死衫哥,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的襟锐。 我是一名探鬼主播撤逢,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粮坞!你這毒婦竟也來了蚊荣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤莫杈,失蹤者是張志新(化名)和其女友劉穎妇押,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姓迅,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡敲霍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了丁存。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肩杈。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖解寝,靈堂內(nèi)的尸體忽然破棺而出扩然,到底是詐尸還是另有隱情,我是刑警寧澤聋伦,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布夫偶,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绅作,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一阅懦、第九天 我趴在偏房一處隱蔽的房頂上張望肉渴。 院中可真熱鬧,春花似錦溢陪、人聲如沸宙址。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至幼苛,卻和暖如春窒篱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舶沿。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工墙杯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暑椰。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像荐绝,于是被迫代替她去往敵國和親一汽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

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

  • ??HTML5 添加的最受歡迎的功能就是 元素。這個元素負責(zé)在頁面中設(shè)定一個區(qū)域恕沫,然后就可以通過 JavaScri...
    霜天曉閱讀 3,015評論 0 2
  • 1 Canvas接口元素定義 1.1 getContext()方法 為了在canvas上繪制监憎,你必須先得到一個畫布...
    Kevin_Junbaozi閱讀 1,312評論 1 2
  • 一:canvas簡介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標簽 ②:HTML5 ...
    GreenHand1閱讀 4,685評論 2 32
  • 熟悉html5的程序員們肯定都知道 元素婶溯,該元素是用來在頁面中規(guī)定一塊區(qū)域鲸阔,然后由js在該區(qū)域內(nèi)繪制圖形。canv...
    米幾V閱讀 2,162評論 1 5
  • 本章內(nèi)容 理解 元素 繪制簡單的 2D 圖形 使用 WebGL 繪制 3D 圖形 這個元素負責(zé)在頁面中設(shè)定一個區(qū)域...
    悶油瓶小張閱讀 849評論 0 0