canva繪制海報(bào)02: 圓角海報(bào)

接上篇, 地址

需求更新:

繪制的海報(bào)要求有圓角汞窗,其他設(shè)置一如既往

技術(shù)思路

  1. 畫(huà)圓角矩形先鱼,然后裁剪此為畫(huà)布區(qū)域
  2. 在上一畫(huà)布區(qū)域進(jìn)行繪制圖片浆竭,即可
  3. 其他照常

涉及API

Canvas.MoveTo, .lineTo, .arc, .drawImage, .clip

// 畫(huà)布归敬,圖片獲取等
    const canvas = document.getElementById('canvas')
    const context = canvas.getContext('2d')
    const img = document.getElementById('img')
    img.onload = ()=>{
        // 繪制圓角矩形
        drawRoundedRect(context, 0, 0, canvas.width, canvas.height, 14);
        // 畫(huà)布裁切
        context.clip()
        // 海報(bào)繪制到裁切后的畫(huà)布上
        context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0,canvas.width, canvas.height);
        // 導(dǎo)出畫(huà)布為圖片
        document.getElementById("canvas_img").src = canvas.toDataURL('image/png')
    }
    // 繪制圓角矩形
    function drawRoundedRect (ctx, x, y, width, height, radius) {
      ctx.moveTo(x + radius, y)
      ctx.lineTo(x + width - radius, y)
      ctx.arc(x + width - radius, y + radius, radius, 1.5 * Math.PI, 2 * Math.PI)
      ctx.lineTo(x + width, y + height - radius)
      ctx.arc(x + width - radius, y + height - radius, radius, 0, 0.5 * Math.PI)
      ctx.lineTo(x + radius, y + height)
      ctx.arc(x + radius, y + height - radius, radius, 0.5 * Math.PI, 1 * Math.PI)
      ctx.lineTo(x, y + radius)
      ctx.arc(x + radius, y + radius, radius, 1 * Math.PI, 1.5 * Math.PI)
    }

效果圖如下

image

Tips:

  1. canvas.toDataURL時(shí)候類(lèi)型請(qǐng)選擇為 image/png烁设,而非其他類(lèi)型,否則會(huì)出現(xiàn)四個(gè)黑色角
  2. 解決清晰度問(wèn)題撬腾,請(qǐng)參考上一篇文章

本示例完整代碼地址: 傳送門(mén)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末螟蝙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子民傻,更是在濱河造成了極大的恐慌胰默,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漓踢,死亡現(xiàn)場(chǎng)離奇詭異牵署,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)喧半,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)奴迅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人挺据,你說(shuō)我怎么就攤上這事取具〔绷ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵暇检,是天一觀的道長(zhǎng)产阱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)块仆,這世上最難降的妖魔是什么构蹬? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮悔据,結(jié)果婚禮上庄敛,老公的妹妹穿的比我還像新娘。我一直安慰自己蜜暑,他們只是感情好铐姚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著肛捍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪之众。 梳的紋絲不亂的頭發(fā)上拙毫,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音棺禾,去河邊找鬼缀蹄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛膘婶,可吹牛的內(nèi)容都是我干的缺前。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼悬襟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼衅码!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起脊岳,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤逝段,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后割捅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體奶躯,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年亿驾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘹黔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡莫瞬,死狀恐怖儡蔓,靈堂內(nèi)的尸體忽然破棺而出醉锄,到底是詐尸還是另有隱情,我是刑警寧澤浙值,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布恳不,位于F島的核電站,受9級(jí)特大地震影響开呐,放射性物質(zhì)發(fā)生泄漏烟勋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一筐付、第九天 我趴在偏房一處隱蔽的房頂上張望卵惦。 院中可真熱鬧,春花似錦瓦戚、人聲如沸沮尿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)畜疾。三九已至,卻和暖如春印衔,著一層夾襖步出監(jiān)牢的瞬間啡捶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工奸焙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞎暑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓与帆,卻偏偏與公主長(zhǎng)得像了赌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子玄糟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354