千家信息网

使用canvas怎么绘制一个图片小程序

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了使用canvas怎么绘制一个图片小程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。体验git clone https://github.
千家信息网最后更新 2026年11月01日使用canvas怎么绘制一个图片小程序

本篇文章为大家展示了使用canvas怎么绘制一个图片小程序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

体验

git clone https://github.com/kuckboy1994/mp_canvas_drawer

想在手机上使用配置自己的 appid 即可。

编译模式中已经为你配置好比较常用的两种模式:

  • 普通绘制,绘制单张分享图。

  • 多图绘制,连续绘制分享图

演示

左侧是 canvasdrawer 绘制的,右侧是UI给的图

使用

  • git clone https://github.com/kuckboy1994/mp_canvas_drawer 到本地

  • 把 components 中的 canvasdrawer 拷贝到自己项目下。

  • 在使用页面注册组件

    {  "usingComponents": {    "canvasdrawer": "/components/canvasdrawer/canvasdrawer"  }}


  • 在页面 **.wxml 文件中加入如下代码


    painting 是需要传入的 json。 getImage 方法是绘图完成之后的回调函数,在 event.detail 中返回绘制完成的图片地址。

  • 当前栗子中的 painting 简单展示一下。详细配置请看 API

    painting(点击展开)

API

对象结构一览

数据对象的第一层需要三个参数: width、height、mode、views。配置中所有的数字都是没有单位的。这就意味着 canvas 绘制的是一个比例图。具体显示的大小直接把返回的图片路径放置到 image 标签中即可。

mode 可选值有 same, 默认值为空,常规下尽量不要使用。如要使用请看 Q&A的第1点。

当前可以绘制3种类型的配置: image、text、rect。配置的属性基本上使用的都是 css 的驼峰名称,还是比较好理解的。

image(图片)

属性含义默认值可选值
url绘制的图片地址,可以是本地图片,如:/images/1.jpeg
top左上角距离画板顶部的距离
left左上角距离画板左侧的距离
width要画多宽0
height要画多高0

text(文本)

属性含义默认值可选值
content绘制文本''(空字符串)
color颜色black
fontSize字体大小16
textAlign文字对齐方式leftcenter、right
lineHeight行高,只有在多行文本中才有用20
top文本左上角距离画板顶部的距离0
left文本左上角距离画板左侧的距离0
breakWord是否需要换行falsetrue
MaxLineNumber最大行数,只有设置 breakWord: true ,当前属性才有效,超出行数内容的显示为...2
width和 MaxLineNumber 属性配套使用,width 就是达到换行的宽度
bolder是否加粗falsetrue
textDecoration显示中划线、下划线效果noneunderline(下划线)、line-through(中划线)

rect (矩形,线条)

属性含义默认值可选值
background背景颜色black
top左上角距离画板顶部的距离
left左上角距离画板左侧的距离
width要画多宽0
height要画多高0

Q&A

  1. 最佳实践

    绘制操作的时候最好 锁住屏幕 ,例如在点击绘制的时候

    wx.showLoading({  title: '绘制分享图片中',  mask: true})


    绘制完成之后

    wx.hideLoading()


    具体可以参考项目下的 /pages/multiple

  2. [mpvue] 由于 canvasdrawer 不主动呈现绘制内容,而是交给调用者去使用 image 来展示,所以在mpvue更新数据就会render整个组件的,之后 canvasdrawer 又会重新被渲染,导致无限循环,所以默认情况下我把代码改为,传入的 painting 和之前的一样的话,组件就不渲染了。只有出现差异的内容才会更新(触发回调),这种个人认为还是可以接受的。 增加顶层参数 mode, mode: 'same' 为可以绘制同样的内容。在 mpvue 模式下勿用。

  3. 二维码和小程序码如何绘制?

    • 二维码和小程序码可以通过调用微信官方的接口产生,需要后端配合。

    • 然后走 type: image 类型进行绘制即可。

  4. 绘制流程相关

    • views 数组中的顺序代表绘画的先后顺序,会有覆盖的现象。请各位使用者注意。

  5. 如何实现圆形头像?

    • 由于完成一些效果,例如: 文字下划线 等。必须要使用微信小程序 rect 相关的接口,和 clip 接口感觉相处的不好(存在bug)。可以查看 微信小程序社区的帖子。

    • so,提供一种解决方式:使用一张中间镂空的图片盖在头像上。

  6. canvas drawer 组件为什么不直接显示canvas画板和其内容呢?

    • 考虑到大部分场景,我们都是用来把图片保存到本地,或用以展示。

    • 保存到本地,返回临时文件给调用者一定是最佳的解决方式。

    • 展示,转化成图片之后,就可以使用 image 基础组件的所有显示模式了,还能设置宽高。

上述内容就是使用canvas怎么绘制一个图片小程序,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

图片 内容 画板 程序 属性 左上角 配置 文本 组件 模式 下划线 只有 含义 接口 方式 顶部 代码 参数 地址 大小 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东猪兼强互联网科技有限公司 湖南永感互联网科技有限公司 科技企业和互联网企业 礼当家互联网科技 嘟嘟瓜互联网科技 亿人帮互联网科技 广西拼得多互联网科技有限公司 互联网汽车科技小镇 科技互联网的估值 银川新华互联网科技职业技术培训学校图片 乌鲁木齐新华智原互联网科技学校 东莞新华互联网科技学校 中科明德北京互联网科技 合肥互联网科技公司公章图片 互联网金融科技元年 互联网的科技体现在哪里 互联网科技品牌 互联网对科技影响 每日互联网科技新闻 山东亿川互联网科技有限责任公司 科技互联网产品 互联网科技有限公司图片 互联网医疗科技 狮子座互联网科技有限公司 昭通云南众福互联网科技有限公司 杭州披云加互联网科技有限公司 美国互联网科技公司 风投北京互联网科技 互联网科技企业商标注意事项 互联网科技对化妆品行业
0