在小程序中使用canvas

一直沒有怎么使用過canvas,小程序也是之前看過一個視頻而已规辱,想要找個例子結(jié)合一下兩者肥橙。所以一個小小的保存圖片作為朋友圈相冊封面的demo就這么出現(xiàn)了,在這里主要記錄一下自己遇到的一些問題以及解決的辦法鹃骂。

截圖:

效果圖/制作頁面/顏色選擇

主要是以下幾個問題:

1.顏色選擇器

2.頁面通信

3.組件間通信

4.canvas(生成圖片台盯、預(yù)覽/保存、文字換行)

1.顏色選擇器

從小程序的文檔中沒有找到相應(yīng)的顏色選擇組件偎漫,昨天(18.3.13)小程序插件功能上線了爷恳,小伙伴們也可以選擇插件有缆。寫這個demo是在前兩天寫的象踊,所以自己就實現(xiàn)了一個簡單的顏色選擇。

鑒于組件的復(fù)用棚壁,而目前小程序的自定義組件只能擁有自己的wxml 模版和 wxss 樣式杯矩,js的處理還是需要在引用組件的父組件中處理,所以換了一種方式實現(xiàn)顏色的選擇:跳到新頁面中選擇袖外。

備注:使用數(shù)據(jù)緩存(setStorageSync)史隆,以免一些數(shù)據(jù)被重新初始化

  /* 選擇顏色
  ob: 對象
  value:顏色值 */
  changeColor: function(e) {
    var value = e.target.dataset.value;
    if (this.data.ob && value) {
      wx.setStorageSync(this.data.ob, value);
      wx.navigateTo({
        url: '/pages/wallpaper/wallpaper',
      });
    }
  },
2.頁面通信

數(shù)據(jù)緩存
navigateTo-url參數(shù)

3.組件間通信(data)
<template is="msgItem" data="{{...item}}"/> // 展開
<template is="msgItem" data="{{item}}"/>
4.canvas(生成圖片、預(yù)覽/保存曼验、文字換行)
// 生成圖片
  drawPicture: function(val) {
    const that = this;
    const btnName = val.currentTarget.dataset.btnName;
    wx.canvasToTempFilePath({
      canvasId: 'myCanvas',
      success: function (res) {
        if (btnName === 'preview') {
          that.preview(res.tempFilePath);
        } else if (btnName === 'save') {
          that.save(res.tempFilePath);
        }
      },
      fail: function (err) {
        console.log(err);
      }
    })
  },
  • 預(yù)覽/保存圖片
// 預(yù)覽
  preview: function(val) {
    if(val) {
      wx.previewImage({
        urls: [val] // 需要預(yù)覽的圖片http鏈接列表
      })
    }
  },
// 保存
  save: function(val) {
    if(val) {
      wx.saveImageToPhotosAlbum({
        filePath: val,
        success: function (res) {
          console.log('成功');
        },
        fail: function (err) {
          console.log('失敗', err);
          if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
            wx.openSetting({
              success(settingdata) {
                console.log(settingdata)
                if (settingdata.authSetting['scope.writePhotosAlbum']) {
                  console.log('獲取權(quán)限成功泌射,給出再次點擊圖片保存到相冊的提示。')
                } else {
                  console.log('獲取權(quán)限失敗鬓照,給出不給權(quán)限就無法正常使用的提示')
                }
              }
            })
          }
        }
      });
    }
  },
// 裁減-換行(measureText)
    var lastSubStrIndex = 0;
    var dTextWidth = 0;
    var lineHeight = 20; // 行高
    var initX = 10; // 起始X坐標(biāo)
    var initY = canvasHeight / 2; // 起始Y坐標(biāo)
    for(var i = 0; i < dText.length; i++) {
      dTextWidth += ctx.measureText(dText[i]).width;
      if (dTextWidth > canvasWidth - initX) {
        ctx.fillText(dText.substring(lastSubStrIndex, i), initX, initY);
        initY += lineHeight;
        dTextWidth = 0;
        lastSubStrIndex = i;
      }
      if (i == dText.length-1) {
        ctx.fillText(dText.substring(lastSubStrIndex, i + 1), initX, initY);
      }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熔酷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子豺裆,更是在濱河造成了極大的恐慌拒秘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異躺酒,居然都是意外死亡押蚤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門羹应,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揽碘,“玉大人,你說我怎么就攤上這事量愧〖鼐眨” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵偎肃,是天一觀的道長煞烫。 經(jīng)常有香客問我,道長累颂,這世上最難降的妖魔是什么滞详? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮紊馏,結(jié)果婚禮上料饥,老公的妹妹穿的比我還像新娘。我一直安慰自己朱监,他們只是感情好岸啡,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赫编,像睡著了一般巡蘸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上擂送,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天悦荒,我揣著相機(jī)與錄音,去河邊找鬼嘹吨。 笑死搬味,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蟀拷。 我是一名探鬼主播碰纬,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼问芬!你這毒婦竟也來了悦析?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤愈诚,失蹤者是張志新(化名)和其女友劉穎她按,沒想到半個月后牛隅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡酌泰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年媒佣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陵刹。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡默伍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衰琐,到底是詐尸還是另有隱情也糊,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布羡宙,位于F島的核電站狸剃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏狗热。R本人自食惡果不足惜钞馁,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匿刮。 院中可真熱鬧僧凰,春花似錦、人聲如沸熟丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽光羞。三九已至绩鸣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間狞山,已是汗流浹背全闷。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工叉寂, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留萍启,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓屏鳍,卻偏偏與公主長得像勘纯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钓瞭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,095評論 25 707
  • 轉(zhuǎn)載鏈接 注:本文轉(zhuǎn)載知乎上的回答 作者:初雪 鏈接:https://www.zhihu.com/question...
    pengshuangta閱讀 28,534評論 9 295
  • 給提問的開發(fā)者的建議:提問之前先查詢 文檔驳遵、通過社區(qū)右上角搜索搜索已經(jīng)存在的問題。 寫一個簡明扼要的標(biāo)題山涡,并且...
    極樂叔閱讀 13,431評論 0 3
  • 《創(chuàng)造力:心流與創(chuàng)新心理學(xué)》(以下簡稱《創(chuàng)造力》)是我加入深讀社看的第一本書堤结,每天在群里看著社友們積極的分享著自己...
    voyager姚閱讀 526評論 0 0
  • 望著你的美唆迁,記得你的情 撫摸著你的照片,回想著你給的溫暖 今日的冬日已不是彼日的冬日 那一片落葉也早已化作泥土 影...
    正捌閱讀 553評論 0 2