当前位置:网站首页>微信小程序 使用wxml2canvas插件生成图片部分问题记录
微信小程序 使用wxml2canvas插件生成图片部分问题记录
2022-04-23 06:09:00 【qq_15197419】
文字无法加粗
css样式添加font-weight:bold,但是生成的图片字体未加粗。检查插件源码,发现bold被替换成了700(未设置字重的为400)
解决办法:这里在源码_drawText方法的红框位置,直接将700替换回bold,插件就能正常绘制出加粗效果了。
绘制结果错乱(部分内容没绘制)
原因1:网络图片
首先,网络图片的域名,必须在小程序设置的"downloadFile合法域名"内,否则绘制不出图片,且导致该image元素后的所有元素都没有绘制(插件不报错)
其次,网络图片需要提前下载到缓存中,否则大概率绘制不出图片,且同样导致后面元素不绘制。

解决办法:使用wx.downloadFile提前下载所有图片,并替换src为缓存图片src
最后,建议在所有image标签中添加data-delay="1"属性,
这样做的好处是,将图片延时到所有文字元素绘制后面进行绘制,即使某张图片绘制错误,也不会异常的导致后面文字内容无法绘制,降低风险。(背景图放本地资源内,不要delay,否则会覆盖文字内容)
原因2:绘制顺序错乱。
插件默认绘制页面没有滚动条,且只绘制当前屏幕内容。如果绘制较长内容,且页面发生滚动时,绘制结果会错乱。

检测源码后发现,插件内部在排序时,使用元素的top值作为数组下标,由于出滚动条后,页面顶部的元素top为负数,负数数组下标在排序时,被错误的排在了末尾,这就导致本应该先绘制的元素,最后绘制,而产生了错误覆盖问题。

解决办法:在源码_sortListByTop方法内,添加红框处代码,先遍历出所有元素的最小top值,如果为负数,则取反,并加到top中,这样就保证数组下标最小为0,不会出现错误排序问题了。
PS:如果top值出现小数,这时被插件作为数组下标也会出问题,请确保top值为整数。
最后,成品图效果(插件内只有画圆角图片方法,没有画圆角矩形方法,懒得补了~)

版权声明
本文为[qq_15197419]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_15197419/article/details/124317168
边栏推荐
- this. getOptions is not a function
- org. xml. sax. SAXParseException; lineNumber: 141; columnNumber: 252; cvc-complex-type. 2.4. a: Found element 'B
- Record WebView shows another empty pit
- [exynos4412] [itop4412] [android-k] add product options
- Project, how to package
- iTOP4412 HDMI显示(4.0.3_r1)
- Handler进阶之sendMessage原理探索
- oracle给对象重命名
- MySQL notes 3_ Restraint_ Primary key constraint
- Component learning
猜你喜欢

【2021年新书推荐】Effortless App Development with Oracle Visual Builder

Record WebView shows another empty pit

杂七杂八的学习

Component based learning (3) path and group annotations in arouter

this. getOptions is not a function

useReducer基本用法

WebView displays a blank due to a certificate problem

Itop4412 HDMI display (4.4.4_r1)
![[2021 book recommendation] Red Hat Certified Engineer (RHCE) Study Guide](/img/36/1c484aec5efbac8ae49851844b7946.png)
[2021 book recommendation] Red Hat Certified Engineer (RHCE) Study Guide

Project, how to package
随机推荐
Kotlin征途之data class [数据类]
org. xml. sax. SAXParseException; lineNumber: 141; columnNumber: 252; cvc-complex-type. 2.4. a: Found element 'B
oracle杀死正在执行的sql
Component based learning (1) idea and Implementation
[多屏互动] 实现双多屏异显二:startActivity方式
杂七杂八的学习
iTOP4412 HDMI显示(4.0.3_r1)
数据库的事务
What did you do during the internship
DCMTK(DCM4CHE)与DICOOGLE协同工作
Project, how to package
this.getOptions is not a function
【2021年新书推荐】Artificial Intelligence for IoT Cookbook
sys.dbms_scheduler.create_job创建定时任务(功能更强大丰富)
oracle对表字段的修改
MySQL notes 4_ Primary key auto_increment
基于BottomNavigationView实现底部导航栏
Android面试计网面经大全【持续更新中。。。】
Abnormal record-22
oracle视图相关