微信 小程式 canvas

来源:http://www.cnblogs.com/shuchong/archive/2016/12/09/6074505.html
-Advertisement-
Play Games

測試手機為IPHONE6,開發者工具版本0.10.102800 微信小程式里的canvas 非 h5 canvas有很多不一樣的地方,以下把微信小程式的canvas叫做wxcanvas 下麵全是我一點點測試出的乾貨,耐心看: 1.wxcanvas,不像h5canvas那樣有width和height屬 ...


測試手機為IPHONE6,開發者工具版本0.10.102800

微信小程式里的canvas 非 h5 canvas有很多不一樣的地方,以下把微信小程式的canvas叫做wxcanvas

 

下麵全是我一點點測試出的乾貨,耐心看:

1.wxcanvas,不像h5canvas那樣有width和height屬性和width和height的style樣式。他只有style樣式,可以理解為他就是個框吧;

2.wxcanvas不要當成真的H5canvas,就當它是個div就行,畫出範圍的東西也是存在的,改變width,height就顯示出來了,或者說這裡有重繪,但具體如何實現的不知道;

3.改變wxcanvas的style的width,height,並不改為原畫布上的東西的大小;

4.css transform變換中的變大縮小也無法改變原畫布上的東西大小

5.官方說法:context只是一個記錄方法調用的容器,用於生成記錄繪製行為的actions數組。context<canvas/>不存在對應關係,一個context生成畫布的繪製動作數組可以應用於多個<canvas/>

實際上,context.getActions()後,context中的信息會被清空,如果想重覆利用,需要var temp=context.getActions()將操作數組保存下來,才可重覆用於wx.drawcanvas;

6.註意

wx.drawCanvas({
  canvasId: 'target',
  actions: context.getActions()
});

預設會清空畫布,想不清空需要

wx.drawCanvas({
    canvasId: 'target',
    actions: context.getActions(),
    reserve:true
});

7.《重點》

<canvas disable-scroll="true" catchtouchmove="ccvsMove" bindtouchmove="cvsMove" canvas-id="target" id="target" style='width:{{width}}px;height:{{height}}px'></canvas>

註意,disable-scroll="true"和bindtouchmove="cvsMove"同時存在時才能避免頁面跟著動,catchtouchmove是不行的

上面的寫法,ccvsMove和cvsMove會都觸發,

ccvsMove返回的是普通touch事件對象,有pageX,clientX等,

cvsMove返回的是canvasTouch事件對象,沒有pageX,clientX,只有x,y

8.

wx.drawCanvas({
    canvasId: 'target',
    actions: [],
    reserve:false
});

可以清空畫布和畫布的狀態

9.畫布的scale tranlate rotate等狀態,在reserve:true時會接著上次的狀態

10. context.getActions()返回的數組很有用,列印出來你會發現裡面的內容你都能看懂,可以直接修改數組改變畫的動作

11.wx.drawCanvas時context.drawImage在手機上可以畫出來,在電腦開發工具上畫不出來

12.wx.canvasToTempFilePath

官方文檔中只有一行,原來

wx.canvasToTempFilePath參數為一個對象包括canvasID,success,fail,complete,和wx.saveFile差不多;
複製代碼
            wx.canvasToTempFilePath({
              canvasId: 'target',
              success: function success(res) {
                wx.saveFile({
                  tempFilePath: res.tempFilePath,
                  success: function success(res) {
                    console.log('saved::' + res.savedFilePath);
                  },
                  complete: function fail(e) {
                    console.log(e.errMsg);
                  }
                });
              },
              complete: function complete(e) {
                console.log(e.errMsg);
              }
            });
複製代碼

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用原生的javascript實現方格拼圖效果 1.新建文件夾 代碼如下: 01.html 01.js 01.css 圖片 遇到一個問題: 在js代碼中的第9行和第10行,本來是一條語句,但我直接用鍵盤迴車把它們分成兩行時,會出現錯誤: 錯誤:syntaxerror:未結束的字元串。 Google之後 ...
  • 一、web font web font是應用在web中的一種字體技術,在CSS中使用font-face定義新的字體。先瞭解操作系統中的字體: a)、安裝好操作系統後,會預設安裝一些字體,這些字體文件描述了每一個文字的形態,一般中文文件大,英文文件小,因為中文字元數多;在控制面板中可以找到文字文件夾, ...
  • img標簽使用絕對路徑無法顯示圖片? 如果這張圖片屬於伺服器圖片或者網路圖片,我們必須在Img標簽里使用網路路徑,只有網路路徑才可以通過瀏覽器發送請求,下載該圖片到用戶的瀏覽器臨時路徑中,才可以顯示在頁面上; 如果這樣圖片在你本地,那麼你可以直接使用該圖片的磁碟路徑展示。 ...
  • Javascript 之探索this的奧秘 前言: this 是 JavaScript 比較特殊的關鍵字,運用的地方之廣,方式之靈活奠定了它的強大,但同時註定了它的難用 。自己剛開始學的時候被繞的很暈,為了徹底弄懂它查了很多資料。然後將自己學的東西整理了一下,以通俗易懂的方式表達出來,權當做學習筆記 ...
  • 公司 部門 姓名 職位 分享內容 痛客夢工廠科技有限公司 技術部 張應欽 Web前端開發工程師 HTML5與CSS3 註:此帖子詳見本人博客文件HTML5與CSS3.docx文件 一、 HTML5 二、 CSS3 三、 jQuery與CSS3選擇器(詳見PDF文檔) 註:部分實例見分享會文件demo ...
  • 用 Vue.js 2.x 與相配套的 Vue Router、Vuex 搭建了一個最基本的後臺管理系統的骨架。 當然先要安裝 node.js(包括了 npm)、vue-cli 項目結構如圖所示: assets 中是靜態資源,components 中是組件(以 .vue 為尾碼名的文件),store 中 ...
  • 在學習產品的道路上,第一篇產品分析報告。 鏈接:http://www.woshipm.com/evaluating/486208.html ...
  • 移動端不同尺寸設備dpi不同,會造成1px線條不同程度的縮放,可利用媒體查詢device-pixel-ratio,進行不同情況匹配: @media(-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5){//dpi:1.5 . ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...