canvas绘图文字换行,第一行文字少计算一个字宽度
2019-03-15 18:15:58
微信公开课小程序热门讨论关于「canvas绘图文字换行,第一行文字少计算一个字宽度」的小程序开发问题
补充:绘制多行文本@paramctxcanvas对象@paramstr文本@paramleftWidth距离左侧的距离@paraminitHeight距离顶部的距离@paramtitleHeight文本行高@paramcanvasWidth文本区宽度@returns{}
展开:***绘制多行文本*@paramctxcanvas对象*@paramstr文本*@paramleftWidth距离左侧的距离*@paraminitHeight距离顶部的距离*@paramtitleHeight文本行高*@paramcanvasWidth文本区宽度*@returns{*}*drawText:function(ctx,str,leftWidth,initHeight,titleHeight,canvasWidth){letlineWidth=0;letlastSubStrIndex=0;每次开始截取的字符串的索引for(leti=0;i<strlength;i++){lineWidth+=ctxmeasureText(str[i])width;if(lineWidthcanvasWidth){ctxfillText(strsubstring(lastSubStrIndex,i),leftWidth,initHeight);绘制截取部分initHeight+=titleHeight;lineWidth=0;lastSubStrIndex=i;}if(i==strlength1){绘制剩余部分ctxfillText(strsubstring(lastSubStrIndex,i+1),leftWidth,initHeight);}}},onLoad:function(options){constctx=wxcreateCanvasContext(scene);constcanvasWidth=300;constcanvasHeight=400;constbgColor=577C8A;开始绘制背景区ctxsetFillStyle(bgColor)ctxfillRect(0,0,canvasWidth,canvasHeight)开始绘制文字区ctxsetFontSize(18);ctxsetFillStyle(fff);letstr=哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈;thisdrawText(ctx,str,50,200,22,200);调用行文本换行函数ctxdraw()},用canvas做文本换行的时候第一行的长度总是少了一个字的宽度呢即速小程序:substring方法返回的子串包括start处的字符,但不包括stop处的字符:thisCalculateText=function(text,width){vararyText=[];varoutText=;varword=null,preWord=null;for(vari=0;i<textlength;++i){word=text[i];if(word== )换行{aryTextpush(outText);outText=;}elseif(word== ){if(preWord!= ) 不处理{aryTextpush(outText);outText=;}}else{outText+=text[i];vartextWidth=thisCanvasmeasureText(outText)width;if(textWidth=width){aryTextpush(outText);outText=;}}preWord=word;}if(outTextlength0)aryTextpush(outText);consolelog(aryText)returnaryText;}
更多有关「canvas绘图文字换行,第一行文字少计算一个字宽度」的讨论可以前往微信公开课小程序参与互动哦!
补充:绘制多行文本@paramctxcanvas对象@paramstr文本@paramleftWidth距离左侧的距离@paraminitHeight距离顶部的距离@paramtitleHeight文本行高@paramcanvasWidth文本区宽度@returns{}
展开:***绘制多行文本*@paramctxcanvas对象*@paramstr文本*@paramleftWidth距离左侧的距离*@paraminitHeight距离顶部的距离*@paramtitleHeight文本行高*@paramcanvasWidth文本区宽度*@returns{*}*drawText:function(ctx,str,leftWidth,initHeight,titleHeight,canvasWidth){letlineWidth=0;letlastSubStrIndex=0;每次开始截取的字符串的索引for(leti=0;i<strlength;i++){lineWidth+=ctxmeasureText(str[i])width;if(lineWidthcanvasWidth){ctxfillText(strsubstring(lastSubStrIndex,i),leftWidth,initHeight);绘制截取部分initHeight+=titleHeight;lineWidth=0;lastSubStrIndex=i;}if(i==strlength1){绘制剩余部分ctxfillText(strsubstring(lastSubStrIndex,i+1),leftWidth,initHeight);}}},onLoad:function(options){constctx=wxcreateCanvasContext(scene);constcanvasWidth=300;constcanvasHeight=400;constbgColor=577C8A;开始绘制背景区ctxsetFillStyle(bgColor)ctxfillRect(0,0,canvasWidth,canvasHeight)开始绘制文字区ctxsetFontSize(18);ctxsetFillStyle(fff);letstr=哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈;thisdrawText(ctx,str,50,200,22,200);调用行文本换行函数ctxdraw()},用canvas做文本换行的时候第一行的长度总是少了一个字的宽度呢即速小程序:substring方法返回的子串包括start处的字符,但不包括stop处的字符:thisCalculateText=function(text,width){vararyText=[];varoutText=;varword=null,preWord=null;for(vari=0;i<textlength;++i){word=text[i];if(word== )换行{aryTextpush(outText);outText=;}elseif(word== ){if(preWord!= ) 不处理{aryTextpush(outText);outText=;}}else{outText+=text[i];vartextWidth=thisCanvasmeasureText(outText)width;if(textWidth=width){aryTextpush(outText);outText=;}}preWord=word;}if(outTextlength0)aryTextpush(outText);consolelog(aryText)returnaryText;}
更多有关「canvas绘图文字换行,第一行文字少计算一个字宽度」的讨论可以前往微信公开课小程序参与互动哦!
标签:微信公开课,小程序
「canvas绘图文字换行,第一行文字少计算一个字宽度」热门讨论订阅
方法1:微信扫描微信公开课小程序码即可订阅热门讨论「canvas绘图文字换行,第一行文字少计算一个字宽度」
方法2:微信搜索微信公开课小程序名称进入,即可订阅热门讨论「canvas绘图文字换行,第一行文字少计算一个字宽度」
方法3:微信网页访问即速商店,长按识别微信公开课小程序码即可订阅热门讨论「canvas绘图文字换行,第一行文字少计算一个字宽度」
微信公开课小程序热门讨论「canvas绘图文字换行,第一行文字少计算一个字宽度」由微信公开课原创摘录于微信小程序商店shop.jisuapp.cn,转载请注明出处。
微信公开课热门讨论「canvas绘图文字换行,第一行文字少计算一个字宽度」由微信公开课开发者向微信用户提供,并对本服务内容、数据资料及其运营行为等真实性、合法性及有效性承担全部责任。
微信公开课小程序
更新时间:2019-03-15 18:15:58
>
__methodCallerx27;ofundefined
>-404011cloudfunctionexecutionerror
>,请补充选择商家自营-预付卡销售-发行方类目,并在基础信息处申请该类目,通过
>:host在模拟器中显示无效
>:请在小程序服务页面上架正式(非测试)内容或商品后重新提交审核
>.net 微信小程序 上传图片
>'setTimeout'的问题
>‘三朵里熙SPA主题减压空间’为什么搜索关键词‘三朵里‘搜不到
>‘扫普通链接二维码打开小程序‘中设置为体验版,扫码打开是线上版本
>“cloudfunctions**indexjs”gitignore
>“NO ULINK DEVICE FOUND”是怎么回事
>“万马掌上校园”的类目审核
>“上线了”公司开发的微信小程序怎么样?
>“产品是否一定需要条形码”
>