canvas基于語法(一)

1.什么是Canvas

canvas 是 HTML5 提供的一個用于展示繪圖效果的標簽.
canvas 原意畫布, 帆布. 在 HTML 頁面中用于展示繪圖效果.
最早 canvas 是蘋果提出的一個方案, 今天已經(jīng)在大多數(shù)瀏覽
器中實現(xiàn).

2.canvas 的使用領(lǐng)域

canvas 的使用領(lǐng)域很多:

  1. 游戲
  2. 可視化數(shù)據(jù)(重點)
  3. banner 廣告
  4. 多媒體
    5.未來
    • 模擬仿真
    • 遠程操作
    • 圖形編輯

3.canvas基礎(chǔ)用法

//創(chuàng)建canvas標簽

var canvas = document.createElement( 'canvas' );
設(shè)置寬高
    canvas.width = 500;
    canvas.height = 400;
設(shè)置邊框
    canvas.style.border = '1px dashed red';
添加到頁面中
    document.body.appendChild( canvas );

獲取渲染畫板

// 獲得 CanvasRenderingContext2D 對象
    var context = canvas.getContext( '2d' );

3.1畫線

  context.moveTo( 0, 0 );
    // 繪制直線
    context.lineTo( 500, 400 );
    // 設(shè)置 起點
    context.moveTo( 0, 400 );
    // 繪制直線
    context.lineTo( 500, 0 );
    // 描邊顯示效果
    context.stroke();
    //填充效果
    context.fill();

4.非零環(huán)繞原則

如果需要判斷某一個區(qū)域是否需要填充顏色. 就從該區(qū)域中隨機的選取一個點.
從這個點拉一條直線出來, 一定要拉到圖形的外面. 此時以該點為圓心.
看穿過拉出的直線的線段. 如果是順時針方向就記為 +1, 如果是 逆時針方向,
就記為 -1. 最終看求和的結(jié)果. 如果是 0 就不填充. 如果是 非零 就填充.

圖解:

1.png

5.閉合路勁與新路徑

closePath()

beginPath() 

6.畫虛線

ctx.setLineDash( 數(shù)組 )
ctx.getLineDash()
ctx.lineDashOffset = 值
--------------------------------
   ctx.moveTo( 100, 90 );
    ctx.lineTo( 100, 110 );
    ctx.moveTo( 300, 90 );
    ctx.lineTo( 300, 110 );

    ctx.moveTo( 100, 140 );
    ctx.lineTo( 100, 160 );
    ctx.moveTo( 300, 140 );
    ctx.lineTo( 300, 160 );

    ctx.moveTo( 100, 190 );
    ctx.lineTo( 100, 210 );
    ctx.moveTo( 300, 190 );
    ctx.lineTo( 300, 210 );
    ctx.stroke();

    ctx.beginPath();
    ctx.moveTo( 100, 100 );
    ctx.lineTo( 300, 100 );
    ctx.stroke();

    ctx.beginPath();
    ctx.setLineDash( [ 5, 5 ] );
    ctx.moveTo( 100, 150 );
    ctx.lineTo( 300, 150 );
    ctx.stroke();

    ctx.beginPath();
    ctx.lineDashOffset = -2;
    ctx.moveTo( 100, 200 );
    ctx.lineTo( 300, 200 );
    ctx.stroke();

圖解:

5.png

7.lineJoin商佛,lineCap 和lineWidth肥荔;

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

    ctx.beginPath();
    ctx.lineWidth = 10;
    ctx.moveTo( 100, 250 );
    ctx.lineTo( 300, 250 );
    ctx.stroke();
           

圖解:

2.png
    -----------------------------
描述:
        'butt' 表示兩端使用方形結(jié)束.
        'round' 表示兩端使用圓角結(jié)束.
        'square' 表示突出的圓角結(jié)束.
     ctx.lineWidth = 10;
    ctx.moveTo( 100, 100 );
    ctx.lineTo( 300, 100 );
    ctx.stroke();

    ctx.beginPath();
    ctx.lineCap =  'round';
    ctx.moveTo( 100, 130 );
    ctx.lineTo( 300, 130 );
    ctx.stroke();

    ctx.beginPath();
    ctx.lineCap =  'square';
    ctx.moveTo( 100, 160 );
    ctx.lineTo( 300, 160 );
    ctx.stroke();

圖解:

3.png
    -------------------------------
描述:
        'round' 使用圓角連接.
        'bevel' 使用平切連接.
        'miter' 使用直角轉(zhuǎn).
     ctx.lineWidth = 10;
    ctx.lineJoin = 'round';
    ctx.moveTo( 100, 100 );
    ctx.lineTo( 200, 200 );
    ctx.lineTo( 300, 100 );
    ctx.stroke();

    ctx.beginPath();
    ctx.lineJoin = 'bevel';
    ctx.moveTo( 100, 150 );
    ctx.lineTo( 200, 250 );
    ctx.lineTo( 300, 150 );
    ctx.stroke();

    ctx.beginPath();
    ctx.lineJoin = 'miter';
    ctx.moveTo( 100, 200 );
    ctx.lineTo( 200, 300 );
    ctx.lineTo( 300, 200 );
    ctx.stroke();

圖解:


5.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鸡捐,隨后出現(xiàn)的幾起案子尚骄,更是在濱河造成了極大的恐慌金蜀,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件珠移,死亡現(xiàn)場離奇詭異,居然都是意外死亡末融,警方通過查閱死者的電腦和手機钧惧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勾习,“玉大人浓瞪,你說我怎么就攤上這事∏缮簦” “怎么了乾颁?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長艺栈。 經(jīng)常有香客問我英岭,道長,這世上最難降的妖魔是什么湿右? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任诅妹,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吭狡。我一直安慰自己尖殃,他們只是感情好,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布划煮。 她就那樣靜靜地躺著送丰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弛秋。 梳的紋絲不亂的頭發(fā)上蚪战,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音铐懊,去河邊找鬼邀桑。 笑死,一個胖子當著我的面吹牛科乎,可吹牛的內(nèi)容都是我干的壁畸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茅茂,長吁一口氣:“原來是場噩夢啊……” “哼捏萍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起空闲,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤令杈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碴倾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逗噩,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年跌榔,在試婚紗的時候發(fā)現(xiàn)自己被綠了异雁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡僧须,死狀恐怖纲刀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情担平,我是刑警寧澤示绊,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站暂论,受9級特大地震影響面褐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜空另,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一盆耽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦摄杂、人聲如沸坝咐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墨坚。三九已至,卻和暖如春映挂,著一層夾襖步出監(jiān)牢的瞬間泽篮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工柑船, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帽撑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓鞍时,卻偏偏與公主長得像亏拉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子逆巍,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

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

  • 一:canvas簡介 1.1什么是canvas及塘? ①:canvas是HTML5提供的一種新標簽 ②:HTML5 ...
    GreenHand1閱讀 4,685評論 2 32
  • 一、簡介 HTML5 中的定義:“它是依賴分辨率的位圖畫布锐极,你可以在 canvas 上面繪制任何圖形笙僚,甚至加載照片...
    destiny0904閱讀 10,544評論 1 4
  • 書中代碼示例效果展示:Core HTML5 Canvas Examples 基礎(chǔ)知識 canvas元素 canva...
    szu_bee閱讀 2,828評論 2 28
  • 一、canvas簡介 1.1 什么是canvas灵再?(了解) 是HTML5提供的一種新標簽 Canvas是一個矩形區(qū)...
    Looog閱讀 3,942評論 3 40
  • 最基本的使用創(chuàng)建一個畫布所有的操作都在畫布的context上面canvas是基于狀態(tài)而不是基于對象的肋层,比如說顏色都...
    親愛的孟良閱讀 1,658評論 0 4