一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統 注冊

小程序 Canvas繪圖不同尺寸設備UI兼容的兩個解決方案

2020-09-27|HiShop
導讀:最近做的一個需求,遇到一個問題, 小程序 繪圖目前只支持 px 單位,設計圖一般是以 iphone6 為基準設計,如果嚴格 iphone6 的尺寸進行代碼編寫,放在其他尺寸的設備上,肯定是不行的,那么怎...

最近做的一個需求,遇到一個問題,小程序繪圖目前只支持 px單位,設計圖一般是以 iphone6為基準設計,如果嚴格 iphone6的尺寸進行代碼編寫,放在其他尺寸的設備上,肯定是不行的,所以需要按照設備進行等比例兼容,這里給出兩個解決方案

類 rem

等比例縮放單位的解決方案,也就是以一個尺寸為基準,例如 iphone 6,然后其他設備按照這個標準,在保證寬度鋪滿設備的前提下,進行等比例縮放

繪制的代碼很簡單:

const ctx = wx.createCanvasContext('shareCard')
ctx.drawImage('../58a.png', this.remSize(85), this.remSize(100), this.remSize(205), this.remSize(250))
ctx.setFontSize(this.remSize(16))
ctx.setFillStyle('yellowgreen')
ctx.fillText('flexible canvas', this.remSize(100), this.remSize(130))
ctx.draw()
復制代碼

其中,remSize 這個方法就是用于等比例縮放尺寸

remSize (num) {
  return num * scale
}
復制代碼

小程序 Canvas繪圖不同尺寸設備UI兼容的兩個解決方案

其中,scale就是當前設備與設計基準設備 iphone6的寬度比例

scale = wx.getSystemInfoSync().windowWidth / 375
復制代碼

當前是以鋪滿設備寬度為目標,所以高度不關心,即 以寬度為參考,高度 auto

以上,就基本實現需求,做法很簡單,這是通常一貫的解決方案 由于示例的需求比較簡單,所以看著沒多大問題,很完美,但是如果實際需求,比較復雜的那種,就有點不太美好了 哪里不美好呢?就是換算尺寸的時候,每個尺寸都要調用一遍 remSize方法,稍微復雜點需求可能就有幾十個需要換算的尺寸了,那就要寫幾十遍的 remSize,當然,寫是可以寫的,只是總感覺哪里不太對勁

圖片代替

這個方法不需要頻繁的尺寸換算,最后統一整體換算即可,原理也很簡單

  • 按照 iphone6尺寸進行繪制

首先,無論當前設備的尺寸是什么,都不用管,先認為當前設備就是 iphone6,然后創建 canvas,在上面進行繪圖,只不過,不能讓用戶看到這個 canvas,因為當前設備并不一定是 iphone6,而你直接就認定是 iphone6,并以 iphone6的尺寸進行繪制,繪制出來的效果肯定跟設計的效果不一樣,所以不能讓用戶看到,可以使用 ccover-view組件覆蓋掉 canvas組件

Note: 如果想要通過給 canvas設置例如 opacity: 0, visibility: hidden等樣式進行隱藏,根據實測,在大部分的手機上其實無法生效,也就是依舊能看到,display: none;則是徹底將 canvas從文檔流中(如果也算是文檔流的話)刪掉,無法進行繪制,所以比較好的做法就是用一個 cover-view進行覆蓋

  • 將繪制好的 canvas輸出為 圖片

canvas繪制好后,將其繪制成圖片保存在本地臨時存儲中,可以拿到這個圖片在本地的臨時路徑,然后將這張圖片放到頁面上,并給這張圖片設置尺寸樣式,圖片的寬度等于設備的寬度,高度跟隨寬度進行等比例縮放,最終讓用戶看到的就是這張圖片,因為進行了等比例縮放,所以視覺效果就是和設計圖上是一樣的

這里也有幾個點需要注意下

  • ctx.draw是異步操作

一直以為這個方法是同步方法,所以調用完此方法后立即輸出圖片,就出現了有時候圖片錯誤的情況,后來才發現這個是異步操作,這就是看文檔不仔細的后果

ctx.draw(false, () => {
  // 保存為本地臨時文件
  this.saveImageToLocal()
})
復制代碼
  • 繪制 canvas階段,要允許頁面橫向溢出

由于一開始繪制 canvas是按照iphone6的標準進行的,所以在有些寬度小于 iphone6的設備上,canvas的寬度是可能會比設備的寬度要大的(如果你繪制的是整屏 canvas),但是小程序頁面的根元素 page,默認設置了 overflow-x: hiddne;,導致繪制不完整,所以需要覆蓋這個樣式:

page {
  overflow-x: scroll;
}
復制代碼
  • 繪制完畢后,避免頁面橫向溢出

當上一步繪制完成 canvas后,并成功將圖片繪制到頁面上時,如果當前設備的寬度小于 iphone 6,又由于前面給 page元素設置了 overflow-x: scroll,所以此時 canvas元素肯定會撐大頁面,讓頁面上出現一個橫向的滾動條,而用戶看到的圖片寬度是和設備寬度相同,不應該出現這種情況

解決方法,一種是直接使用 wx-if這種條件語句刪掉 canvas元素,但是在低版本的基礎庫上,可能會報 e.canvasId is undefined的錯誤(雖然根據實測來看,似乎并不影響正常功能) 第二種就是減少 canvas的尺寸,反正已經繪制好圖片了,后面也用不到它了,而且用戶也看不到,那就可以隨意減小尺寸,我的做法是干脆無論寬高通通設為 0,免得又出現什么 bug

// 避免在尺寸小的設備上溢出
this.setData({
  canvasWidth: 0,
  canvasHeight: 0
})
復制代碼

以上,兩種方法都可以選擇,各有利弊,第一種要寫很多 rem轉換,第二種需要做的操作又比較多,各有利弊,根據真實需求進行抉擇即可。


電話咨詢 預約演示 0元開店
主站蜘蛛池模板: 亚洲=aV永久综合在线观看另类|#NAME?|日本亚洲精品成人欧美一区|久草精品在线播放|国产亚洲综合视频|亚洲精彩视频在线 | 精品久久久成人|欧美人与性囗牲恔配|漂亮人妇中出中文字幕在线|91=avpornwwww蝌蚪99|狠狠爱亚洲|久久亚洲一区二区三区四区五区高 | www.久草.com|日本不卡高清|丁香花免费完整高清观看|国产一级爽快片在线观看|亚洲多毛女人厕所小便|成人在线视频观看 | 久久永久免费人妻精品我不卡|日韩=a在线播放|韩国视频一区|天天干天天插天天操|亚洲色图视频在线观看|亚洲精品爱爱 | 97超级碰碰人妻中文字幕|女人色毛茸茸视频|久久久精品欧美一区二区免费|四虎永久在线观看|国产激情91久久精品导航|欧美午夜影院免费观看 | АⅤ天堂中文在线网|人人澡人人澡人人看欧美|高H喷水荡肉爽文NP肉色学校|日韩一二三区不卡在线视频|欧美在线观看www|中文字幕一区二区三区5566 | 一本一道波多野毛片中文在线|久久久久久久久久亚洲精品|高潮又爽又黄又无遮挡免费软件|57p=ao国产成永久免费视频|在线国产欧美|九草=av | 日本三级精品视频|国产人妻人伦精品无码|国产毛片久久久久久|奇米网首页|亚洲精品久久久打桩机小说|欧美一区二区三区成人 | 国产精欧美一区二区三区|欧美大穴|精品视频9999|男人边做边吃奶头视频|www九九热|日本午夜在线亚洲.国产 | 国产最新网站|亚洲美女一区|亚洲V欧美V国产V在线观看|国产精品乱码久久久久久1区2区|大地影视资源在线观看|国产精品扒开腿做爽爽爽日本无码 | 模特写真福利内部视频|性高朝久久久久久久3小时|天天插夜夜爽|亚州综合视频|日韩免费一区二区三区|九九热线有精品视频99 | 欧洲亚洲综合一区二区三区|99国产精品久久|免费v=a国产高清大片在线|国产成人精品一区二三区在线观看|91麻豆精品国产91|欧美日韩福利视频 | 一本久道在线|#NAME?|成人在线www|精品国产一区二区三区久久影院|精品日韩=av高清一区二区三区|chinese乱国产伦video | 蜜臀=aⅴ国产精品久久久国产老师|中文在线一区二区三区|小宝极品内射国产在线|#NAME?|影音先锋啪啪=aV资源网站|国产精品久久久久网站 | 日韩一级色|亚洲一级成人|亚洲=aV无码专区亚洲=aV桃花岛|91啦在线观看|性高潮久久久久久久|国产美女国产爽字 | 区美毛片|国产精品久久久久久久久软件|亚洲精品欧美一区二区三区|国产性色|国产精品家庭影院|日韩中文第一页 性生大片免费观看668|亚洲成人=av影片|毛片大全真人在线|国产老女人高潮大全|中文字幕丰满|一本久久久久 | 麻豆精品一区二区三区视频|99精美视频|久久精品久久精品中文字幕|BGMBGMBGM欧美老妇|插插久久|男女XX00上下抽搐动态图 | 伊人网视频在线|久久免费看少妇=a高潮一片黄特|99国产精品自在自在久久|久久国产最新|一级片网址|无码天堂亚洲国产=aV久久 | 免费在线观看黄色大片|综合一区无套内射中文字幕|你好星期六在线免费观看|91探花福利精品国产自产在线|成人18夜夜网深夜福利网|九九影院理论片在线观看一级 | 女同互慰高潮呻吟免费播放|精品视频在线99|国产美女视频免费的|国产另类ts人妖高潮|欧美黄色片免费观看|一起操视频在线观看 | www.久草.com|日本不卡高清|丁香花免费完整高清观看|国产一级爽快片在线观看|亚洲多毛女人厕所小便|成人在线视频观看 | 亚洲欧美一区二区精品中文字幕|免费=av网站在线|国产=av日韩=a∨亚洲=av|成年=a级毛片免费观看|五月丁香六月综合缴情基地|日本又黄又粗暴的gif动态图 | 成全高清视频免费观看|亚欧在线观看视频|天天躁日日躁狠狠躁欧美老妇|性感一级片|日韩一区免费观看|欧美日韩在线免费观看 | 日本三级韩国三级欧美三级|日韩黄色大片免费看|美国黄色小视频|久久精品国产亚洲=aV麻豆~|中文字幕人成人|一级在线免费 | 大胆L少妇BBBBBB流水|欧美操日韩|麻豆视传媒精品=aV|大地资源色婷婷视频在线|亚洲影视一区二区三区|成年男女免费视频在线观看不卡 | 台湾久久网|99久久精品免费看国产四区|亚洲一区二区三区在线视频观看|一区二区三区四区在线免费视频|红桃视频二区|国产久艹视频 | 青娱乐极品视觉盛宴=av|国产成人=av无码片在线观看|国产网站入口|国产一区二区=av|星空天美mv视频大全免费观看|曰韩一级片 | 日本久久99成人网站|99视频在线免费看|亚洲一区成人在线观看|青草福利在线|中文字幕无线码中文字幕免费|亚洲视频h | 国产精品爽爽=aV在线观看|国产蝌蚪视频在线观看|超碰伊人|国产二区不卡|亚洲高清欧美日韩一区二区三区|无码成人中文字幕不卡 | 99久久无码一区人妻|亚洲第一欧美|欧美一级欧美一级高清|99热这里只有精品9|欧美成人=a猛片在线观看|国产日产欧产美韩系列麻豆 | 一本一道波多野毛片中文在线|久久久久久久久久亚洲精品|高潮又爽又黄又无遮挡免费软件|57p=ao国产成永久免费视频|在线国产欧美|九草=av | 亚洲=aV无码成人精品区在线播放|亚洲熟妇=av综合网五月|超粉嫩00无码福利视频|噜噜噜久久亚洲精品国产品麻豆|国产精品一区二区97|日本精品在线视频 | 国产成人=av一区|日本大片免=a费观看视频老师|在线观看高清视频|一机毛片|久久九九兔免费精品6|久久爽精品区穿丝袜 | 成人在线视频亚洲|免费无码又爽又刺激毛片|#NAME?|92看片淫黄大片欧美看国产片|天天模夜夜肏狠狠的操|东日韩二三区 在线观看国产免费|亚洲免费成人在线视频|日韩免费一级毛片|国产综合久久|爱情岛论坛亚洲品质自拍hd|欧美成人免费一区二区 | 五月婷婷在线观看视频|国产熟女精品视频国语|97亚洲欧美国产网曝97|91中文精品|高潮迭起=av乳颜射后入|国产91精品久久久 | 国内一级片在线观看|精品成人佐山爱一区二区|色偷偷9999WWW|午夜香吻免费观看视频在线播放|久久任你操|国=a产久v久伊人 | 久久污视频|无码人妻精品中文字幕免费时间|日产无码精品一区二区三区|四虎最新免费网站|亚洲大尺度吃奶做爰|chinese叫床videos | 中文字幕高清在线观看|中文字幕一区二区三区门四区五区|中文字幕久久999及|国产亚洲日韩=aV在线播放不卡|精品国产免费看|亚洲tv在线 | 久热中文字幕无码视频|波多野结衣桃色视频|国产成人精品日本亚洲91桃色|91精品国产调教在线观看|人妻的渴望波多野结衣|黄色=a一级毛片 | 中文字幕在线观看视频www|在线视频网站WWW色|91啦国产|国产社区精品视频|91毛片免费观看|国产一区二区黑人欧美xxxx | 小柔在教室轮流澡到高潮视频|大乳boobs巨大吃奶乳水|蜜桃=av鲁一鲁一鲁一鲁|亚洲少妇综合网|国产亚洲精品码|免费看国产精品视频 |