填充/描邊顏色 設(shè)置陰影 縮放/位移/旋轉(zhuǎn)畫布 畫布保存base64編碼內(nèi)容 畫布渲染畫布

填充和描邊的顏色

  • fillStyle : 設(shè)置或返回用于填充繪畫的顏色

  • strokeStyle: 設(shè)置或返回用于筆觸的顏色

  • 兩者可能的值: 16進(jìn)制數(shù)據(jù)师坎,rgb值乙嘀,甚至rgba. 一般先進(jìn)行設(shè)置樣式然后進(jìn)行繪制叉存。

          ctx.strokeStyle = "red";
          ctx.strokeStyle = "#ccc";
          ctx.strokeStyle = "rgb(255,0,0)";
          ctx.strokeStyle = "rgba(255,0,0,6)";
    

設(shè)置陰影

  • shadowColor: 設(shè)置或返回用于陰影的顏色

  • shadowBlur: 設(shè)置或返回用于陰影的模糊級(jí)別,大于1的正整數(shù)躏仇,數(shù)值越高,模糊程度越大

  • shadowOffsetX: 設(shè)置或返回陰影距形狀的水平距離

  • shadowOffsetY: 設(shè)置或返回陰影距形狀的垂直距離

          ctx.fillStyle = "rgba(255,0,0, .9)"
          ctx.shadowColor = "teal";
          ctx.shadowBlur = 10;
          ctx.shadowOffsetX = 10;
          ctx.shadowOffsetY = 10;
          ctx.fillRect(100, 100, 100, 100);
          //設(shè)置png圖片的陰影愁憔,圖片透明部分不會(huì)被投影。
    

變換

  1. 縮放

    • context.scale(scalewidth,scaleheight) 縮放當(dāng)前繪圖孽拷,更大或更小
      • scalewidth : 縮放當(dāng)前繪圖的寬度 (1=100%, 0.5=50%, 2=200%, 依次類推)
      • scaleheight : 縮放當(dāng)前繪圖的高度 (1=100%, 0.5=50%, 2=200%, etc.) +注意:縮放的是整個(gè)畫布吨掌,縮放后,繼續(xù)繪制的圖形會(huì)被放大或縮小。
  2. 位移畫布

    • ctx.translate(x,y) 方法重新映射畫布上的 (0,0) 位置
      • x: 添加到水平坐標(biāo)(x)上的值
      • y: 添加到垂直坐標(biāo)(y)上的值
    • 發(fā)生位移后膜宋,相當(dāng)于把畫布的0,0坐標(biāo) 更換到新的x,y的位置窿侈,所有繪制的新元素都被影響。
      位移畫布一般配合縮放和旋轉(zhuǎn)等秋茫。
  3. 旋轉(zhuǎn)

    • context.rotate(angle); 方法旋轉(zhuǎn)當(dāng)前的繪圖
      • 注意參數(shù)是弧度(PI)
      • 如需將角度轉(zhuǎn)換為弧度史简,請(qǐng)使用 degrees*Math.PI/180 公式進(jìn)行計(jì)算。
  4. 繪制環(huán)境保存/還原-配合位移畫布使用

    • ctx.save() 保存當(dāng)前環(huán)境的狀態(tài)
      • 可以把當(dāng)前繪制環(huán)境進(jìn)行保存到緩存中肛著。
    • ctx.restore() 返回之前保存過(guò)的路徑狀態(tài)和屬性
      • 獲取最近緩存的ctx
  5. 設(shè)置繪制環(huán)境的透明度

    • context.globalAlpha=number;
      • number:透明值圆兵。必須介于 0.0(完全透明) 與 1.0(不透明) 之間。
      • 設(shè)置透明度是全局的透明度的樣式枢贿。注意是全局的殉农。
  6. 畫布限定區(qū)域繪制

    • ctx.clip(); 方法從原始畫布中剪切任意形狀和尺寸
      • 一旦剪切了某個(gè)區(qū)域,則所有之后的繪圖都會(huì)被限制在被剪切的區(qū)域內(nèi)(不能訪問(wèn)畫布上的其他區(qū)域)
      • 一般配合繪制環(huán)境的保存和還原局荚。

畫布保存base64編碼內(nèi)容

  • canvas.toDataURL(type, encoderOptions);canvas繪制的內(nèi)容輸出成base64內(nèi)容超凳。
  • 例如:canvas.toDataURL("image/jpg",1);
  • 參數(shù)說(shuō)明
    • type,設(shè)置輸出的類型危队,比如 image/png image/jpeg等

    • encoderOptions: 0-1之間的數(shù)字聪建,用于標(biāo)識(shí)輸出圖片的質(zhì)量钙畔,1表示無(wú)損壓縮茫陆,類型為: image/jpeg 或者image/webp才起作用。

            案例1:
            var canvas = document.getElementById("canvas");
            var dataURL = canvas.toDataURL();
            console.log(dataURL);
            // "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNby
            // blAAAADElEQVQImWNgoBMAAABpAAFEI8ARAAAAAElFTkSuQmCC"
        
            var img = document.querySelector("#img-demo");//拿到圖片的dom對(duì)象
            img.src = canvas.toDataURL("image/png");      //將畫布的內(nèi)容給圖片標(biāo)簽顯示
      

畫布渲染畫布

  • context.drawImage(img,x,y); img參數(shù)也可以是畫布擎析,也就是把一個(gè)畫布整體的渲染到另外一個(gè)畫布上簿盅。

          var canvas1 = document.querySelector('#cavsElem1');
          var canvas2 = document.querySelector('#cavsElem2');
          var ctx1 = canvas1.getContext('2d');
          var ctx2 = canvas2.getContext('2d');
          ctx1.fillRect(20, 20, 40, 40);      //在第一個(gè)畫布上繪制矩形       
          ctx2.drawImage(canvas1, 10, 10);    //將第一個(gè)畫布整體繪制到第二個(gè)畫布上
    

創(chuàng)建線性漸變的樣式-了解

  • 語(yǔ)法:ctx.createLinearGradient(x0,y0,x1,y1); //參數(shù):x0,y0起始坐標(biāo),x1,y1結(jié)束坐標(biāo)

  • 一般不用揍魂,都是用圖片代替桨醋,canvas繪制圖片效率更高。

  • 線性漸變可以用于 矩形现斋、圓形喜最、文字等顏色樣式

  • 線性漸變是一個(gè)對(duì)象

        //創(chuàng)建線性漸變的對(duì)象,
        var grd=ctx.createLinearGradient(0,0,170,0);
        //添加一個(gè)漸變顏色庄蹋,第一個(gè)參數(shù)介于0-1的值瞬内,表示漸變中開(kāi)始與結(jié)束之間的位置。
        grd.addColorStop(0,"black");  
        grd.addColorStop(1,"white");  //添加一個(gè)漸變顏色
        ctx.fillStyle =grd;           //關(guān)鍵點(diǎn)限书,把漸變?cè)O(shè)置到 填充的樣式
    

設(shè)置圓形漸變/徑向漸變- 了解

  • 定義: 創(chuàng)建放射狀/圓形漸變對(duì)象虫蝶。可以填充文本倦西、形狀等
  • context.createRadialGradient(x0,y0,r0,x1,y1,r1);
    • x0: 漸變的開(kāi)始圓的 x 坐標(biāo)

    • y0: 漸變的開(kāi)始圓的 y 坐標(biāo)

    • r0: 開(kāi)始圓的半徑

    • x1: 漸變的結(jié)束圓的 x 坐標(biāo)

    • y1: 漸變的結(jié)束圓的 y 坐標(biāo)

    • r1: 結(jié)束圓的半徑

            var rlg = ctx.createRadialGradient(300,300,10,300,300,200);
            rlg.addColorStop(0, 'teal');    //添加一個(gè)漸變顏色
            rlg.addColorStop(.4, 'navy');
            rlg.addColorStop(1, 'purple');
            ctx.fillStyle = rlg;//設(shè)置 填充樣式為延續(xù)漸變的樣式
            ctx.fillRect(100, 100, 500, 500);
      

繪制背景圖-了解

  • 定義: ctx.createPattern(img,repeat) 方法在指定的方向內(nèi)重復(fù)指定的元素
  • 第一參數(shù):設(shè)置平鋪背景的圖片能真,第二個(gè)背景平鋪的方式。
    • image : 規(guī)定要使用的圖片、畫布或視頻元素粉铐。

    • repeat : 默認(rèn)疼约。該模式在水平和垂直方向重復(fù)。

    • repeat-x : 該模式只在水平方向重復(fù)蝙泼。

    • repeat-y : 該模式只在垂直方向重復(fù)忆谓。

    • no-repeat: 該模式只顯示一次(不重復(fù))。

            var ctx=c.getContext("2d");
            var img=document.getElementById("lamp");
            var pat=ctx.createPattern(img,"repeat");
            ctx.rect(0,0,150,100);
            ctx.fillStyle=pat;//  把背景圖設(shè)置給填充的樣式
            ctx.fill();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踱承,一起剝皮案震驚了整個(gè)濱河市倡缠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茎活,老刑警劉巖昙沦,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異载荔,居然都是意外死亡盾饮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門懒熙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)丘损,“玉大人,你說(shuō)我怎么就攤上這事工扎∨窃浚” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵肢娘,是天一觀的道長(zhǎng)呈础。 經(jīng)常有香客問(wèn)我,道長(zhǎng)橱健,這世上最難降的妖魔是什么而钞? 我笑而不...
    開(kāi)封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮拘荡,結(jié)果婚禮上臼节,老公的妹妹穿的比我還像新娘。我一直安慰自己珊皿,他們只是感情好网缝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著亮隙,像睡著了一般途凫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溢吻,一...
    開(kāi)封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天维费,我揣著相機(jī)與錄音果元,去河邊找鬼。 笑死犀盟,一個(gè)胖子當(dāng)著我的面吹牛而晒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阅畴,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼倡怎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了贱枣?” 一聲冷哼從身側(cè)響起监署,我...
    開(kāi)封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纽哥,沒(méi)想到半個(gè)月后钠乏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡春塌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年晓避,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片只壳。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俏拱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吼句,到底是詐尸還是另有隱情锅必,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布命辖,位于F島的核電站况毅,受9級(jí)特大地震影響分蓖,放射性物質(zhì)發(fā)生泄漏尔艇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一么鹤、第九天 我趴在偏房一處隱蔽的房頂上張望终娃。 院中可真熱鬧,春花似錦蒸甜、人聲如沸棠耕。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窍荧。三九已至,卻和暖如春恨憎,著一層夾襖步出監(jiān)牢的瞬間蕊退,已是汗流浹背假残。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工挺物, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓纲岭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親柬采。 傳聞我的和親對(duì)象是個(gè)殘疾皇子党窜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355