微信公开课
微信公开课小程序热门讨论关于「canvas动态设置高度」的小程序开发问题
补充:当前Bug的表现(可附上截图)我在js中的data里设置height:650px这个是最大的高度,而在onshow中读取图片,设置文字,这些高度都是变化的,所以我用dynamic_height来指示实际也就是最后的canvas高度,而在有些
展开:当前Bug的表现我在js中的data里设置height:650px这个是最大的高度,而在onshow中读取图片,设置文字,这些高度都是变化的,所以我用dynamic_height来指示实际也就是最后的canvas高度,而在有些情况下,canvas的高度是650px而不是在onshow中动态设置的高度预期表现这个是正常的图片bug后的图片会比这个高,但是下面有一部分是空白我在onload中设置了这个canvas要显示什么文字,在onshow中用wxgetImageInfo获取了图片的高度,在success方法中,通过res来获取图片的高度,并得到整个图片的高度,最后用thissetdata设置高度提供一个最简复现Demo<!这里是wxml<canvascanvasid=shareCanvasstyle=width:400px;height:{{height}};<canvas这里是onshow函数,可以看到有dynamic_height=dynamic_height+const这种的语句,用来增加图片高度在onshow中我还用了fillrect来绘制一个大的矩形作为背景,其高度也是固定的onShow:function(){letself=thisconsolelog(thisdatastuffnamelength)wxgetImageInfo({src:selfdatasrc,success(res){constctx=wxcreateCanvasContext(shareCanvas)conststuffnamewidth=ctxmeasureText(selfdatastuffname)ctxsetFillStyle(FFFFFF)ctxfillRect(0,0,400,700)ctxsetTextBaseline(top)vardynamic_height=pic_name+17varstuffname=selfdatastuffnamevarchr=stuffnamesplit();vartemp=;varrow=[];ctxsetFontSize(33)ctxsetFillStyle(black)for(varb=0;b<rowlength;b++){ctxsetFontSize(33)ctxsetFillStyle(black)ctxfillText(row[b],20,pic_name+10+b*40);dynamic_height=dynamic_height+40}ctxsetFontSize(27)ctxsetFillStyle(black)if(selfdataqq!=null&&selfdataqq!=null&&selfdataqq!=){ctxsetFontSize(27)ctxsetFillStyle(black)ctxfillText(请联系QQ:+selfdataqq,20,dynamic_height)dynamic_height=dynamic_height+40}elseif(selfdataphone!=null&&selfdataphone!=null&&selfdataphone!=){ctxsetFontSize(27)ctxsetFillStyle(black)ctxfillText(请联系手机:+selfdataphone,20,dynamic_height)dynamic_height=dynamic_height+40}ctxsetFontSize(17)ctxsetFillStyle(gray)ctxfillText(selfdatatime+发布,20,dynamic_height3)dynamic_height=dynamic_height+25ctxmoveTo(20,dynamic_height)ctxlineTo(380,dynamic_height)ctxsetStrokeStyle(gray)ctxstroke()dynamic_height=dynamic_height+15ctxdrawImage(iconcodejpg,20,dynamic_height,100,100)dynamic_height+=115selfsetData({height:dynamic_height+px})ctxdraw(false,function(){3canvas画布转成图片wxcanvasToTempFilePath({canvasId:shareCanvas,quality:1,success(res){selfsetData({filePath:restempFilePath,})selfsave()}})})consolelog(selfdatafilePath)}})},即速小程序:selfsetData({height:dynamic_height+px},()={ctxdrawxxxxxxx})这样可以吗
更多有关「canvas动态设置高度」的讨论可以前往微信公开课小程序参与互动哦!了解更多