家政预约小程序09小程序分享及海报分享

目录

  • 1 设置弹窗
  • 2 制作海报
  • 总结

上一篇我们介绍了服务详情页面的开发,本篇介绍一下用户分享及海报分享的功能

1 设置弹窗

当用户点击分享按钮的时候,系统弹出弹窗界面,提供分享好友及分享海报的选项。选中页面组件,添加弹窗组件
在这里插入图片描述
关闭底部按钮显示
在这里插入图片描述
修改弹窗的标题为用户分享
在这里插入图片描述
在弹窗内容里添加小程序分享组件
在这里插入图片描述
设置宽100%,高40px
在这里插入图片描述
选择服务详情页面
在这里插入图片描述
打开携带参数配置,参数配置为如下表达式

[{"key": "id","value": $w.page.dataset.params.id}
]

关闭默认打开弹窗配置
在这里插入图片描述
给按钮设置点击事件,点击的时候打开弹窗
在这里插入图片描述
在这里插入图片描述

2 制作海报

海报制作的话,先需要制作底图,我们先准备好我们的背景图和小程序的二维码,然后切换到素材管理,将我们的图片进行上传
在这里插入图片描述
在点击海报分享按钮的时候需要再弹出一个弹窗,里边放置我们的canvas组件和按钮,点击按钮可以将图片下载到手机里

在这里插入图片描述

在代码区新建一个javascript方法,里边输入如下内容
在这里插入图片描述

export default async function ({ event, data }) {$w.utils.showLoading({title: "加载中",mask: false,})//获取canvas实例和上下文const canvas = $w.canvas1.canvasInstanceconst ctx = $w.canvas1.canvasCtx//获取可视窗口的宽高const width = $w.device.viewport.widthconst height = $w.device.viewport.height//获取设备像素比let dpr = wx.getWindowInfo().pixelRatioif (ctx && canvas && $w.canvas1?.type === '2d') {// 清空画布ctx.clearRect(0, 0, width, height)//初始化画布大小、画布的最终大小需要按设备像素比进行转换、canvas.width = width * dprcanvas.height = height * dprctx.scale(dpr, dpr)//ctx.fillStyle = "rgb(246, 248, 251,0)";//ctx.fillRect(0, 0, canvas.width, canvas.height)//准备好的poster图片和二维码图片let posterMoudleImg = 'https://lowcode-9g6zlcz504383ac8-1305601167.tcloudbaseapp.com/resources/2024-05/lowcode-1824729'let codeImg = 'https://lowcode-9g6zlcz504383ac8-1305601167.tcloudbaseapp.com/resources/2024-05/lowcode-1824572'//获取海报图片的尺寸let posterImgInfo = await new Promise((reslove) => {wx.getImageInfo({src: posterMoudleImg,success(res) {reslove(res);}})})// 计算出新的图片宽高(此处以宽为基准,按90%的宽等比例缩放图片)let posterImgRate = posterImgInfo.width / posterImgInfo.heightlet posterWidth = 0.9 * widthlet posterHeight = posterWidth / posterImgRate//获取poster图片信息let posterImg = canvas.createImage()posterImg.src = posterMoudleImgposterImg.onload = async () => {//绘制海报底图let x_position = (width - posterWidth) / 2, y_position = 20ctx.drawImage(posterImg, x_position, y_position, posterWidth, posterHeight)const qrcodeImg = canvas.createImage()qrcodeImg.src = codeImgqrcodeImg.onload = async () => {ctx.drawImage(qrcodeImg, 0.75 * posterWidth, 0.83 * posterHeight, posterWidth / 4, posterWidth / 4)}if ($w.wedaContext.platforms.includes('MP')) {setTimeout(() => {ctx.draw(true, wx.canvasToTempFilePath({x: x_position,   // 指定的画布区域的左上角横坐标y: y_position,       // 指定的画布区域的左上角纵坐标width: width - x_position * dpr * 2,     // 指定的画布区域的宽度height: (width - x_position * dpr * 2) / posterImgRate,   // 指定的画布区域的高度destWidth: (width - x_position * dpr * 2) * dpr, // 输出的图片的宽度destHeight: (width - x_position * dpr * 2) / posterImgRate * dpr, // 输出的图片的高度canvas: canvas,//quality: 1,success(res) {$w.page.setState({ "tempFilePath": res.tempFilePath }) //将图片临时路径保存到自定义变量tempFilePath//console.log($w.page.dataset.state.tempFilePath)},fail(res) {console.log('error')$w.utils.showToast({title: "保存失败", // 提示的内容,icon: "error", // 图标,duration: 2000, // 延迟时间,mask: true, // 移动端是否显示透明蒙层(移动端显示透明蒙层可以防止触摸穿透,PC 端不受此配置影响)})},complete(res) {//console.log(res)$w.utils.hideLoading();}}))}, 1500)}}}
}

只需要替换一下底图和二维码的地址,我们在素材里复制图片的地址,填充到对应位置
在这里插入图片描述

然后再创建一个javascript方法,用来下载生成后的图片

export default function savePoster() {wx.saveImageToPhotosAlbum({filePath: $w.page.dataset.state.tempFilePath, //图片临时路径success(res) {$w.utils.showToast({title: "保存成功", // 提示的内容,icon: "success", // 图标,duration: 2000, // 延迟时间,mask: true, // 移动端是否显示透明蒙层(移动端显示透明蒙层可以防止触摸穿透,PC 端不受此配置影响)});},fail(res) {$w.utils.showToast({title: "保存失败", // 提示的内容,icon: "error", // 图标,duration: 2000, // 延迟时间,mask: true, // 移动端是否显示透明蒙层(移动端显示透明蒙层可以防止触摸穿透,PC 端不受此配置影响)});}})
}

在这里插入图片描述
这两段代码来源于官方文档

https://cloud.tencent.com/document/product/1301/103698

代码写好后需要让代码生效,选中canvas组件,先清空我们的初始化代码
在这里插入图片描述
然后设置canvas渲染完成时的事件
在这里插入图片描述
选中我们的按钮,设置点击事件,选择我们的下载方法
在这里插入图片描述
设置好之后,设置我们在点击分享的时候的弹窗,里边的第二个按钮,我们设置点击事件为打开我们的第二个弹窗组件
在这里插入图片描述
在这里插入图片描述

总结

本篇我们介绍了分享好友及海报分享的功能,分享好友主要设置基础属性就可以。海报设置不复杂,官方已经把代码都写好了,不过要读懂代码恐怕还是要有一定的基本功才行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/847260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解 IPv4 和 IPv6 之间的区别?

在广阔的互联网环境中,设备之间的通信依赖于一组独特的协议来促进连接。在这些协议中,IPv4(互联网协议第4版)和IPv6(互联网协议第6版)是数字基础设施的支柱,能够跨网络传输数据。但是&#xff0…

基于WIN2016搭建MS2016 ALWAYS ON域控故障转移群集

基于WIN2016搭建MS2016 ALWAYS ON域控故障转移群集 一、前言1、Always On简介2、AD DC域控简介 二、部署实施1、部署环境简介2、搭建流程简介3、域控服务器安装及群集节点加域3.1、安装域控,安装同时会安装DNS系统3.2、执行安装,完成后重启服务器3.3、将…

「vue同一个组件,不同路由切换时界面没有更新问题」

问题&#xff1a;vue项目中不同路由切换时&#xff0c;因为引用的同一个组件&#xff0c;界面数据没有更新 一、解决方法 添加key&#xff0c;具体原理可参考vue中的diff算法 <router-view :key"$route.fullPath"></router-view>

AI大数据处理与分析实战--体育问卷分析

AI大数据处理与分析实战–体育问卷分析 前言&#xff1a;前一段时间接了一个需求&#xff0c;使用AI进行数据分析与处理&#xff0c;遂整理了一下大致过程和大致简要结果&#xff08;更详细就不方便放了&#xff09;。 文章目录 AI大数据处理与分析实战--体育问卷分析一、数据…

【电子通识】什么是电力电子

什么是电力电子 在日常生活中&#xff0c;电能变换的需求无处不在。比如给手机充电&#xff0c;充电器从插座220V交流电取电并转换为手机电池所需的5V或者其他幅度的直流电输送给手机&#xff0c;这就完成了最简单的AC-DC电能转换。除此之外&#xff0c;还有空调、电视、新能源…

【C++】入门(二):引用、内联、auto

书接上回&#xff1a;【C】入门&#xff08;一&#xff09;&#xff1a;命名空间、缺省参数、函数重载 文章目录 六、引用引用的概念引用的使用场景1. 引用做参数作用1&#xff1a;输出型参数作用2&#xff1a;对象比较大&#xff0c;减少拷贝&#xff0c;提高效率 2. 引用作为…

MySQL—约束—外键约束(基础)

一、引言 概念&#xff1a;外键用来让两张表的数据之间建立连接&#xff0c;从而保证数据的一致性和完整性。 举个例子&#xff1a; 提示说明&#xff1a;&#xff08;有两张表&#xff09; &#xff08;1&#xff09;员工表&#xff1a;emp id&#xff1a;主键、姓名、年龄、…

git 提交

当你不小心在master上改了代码&#xff0c;并且add&#xff0c; commit 之后&#xff0c;想push&#xff0c;发现根本push不了&#xff08;本来也不能直接将master代码push到远端&#xff09;&#xff0c;而且每次pull远程master的时候都要和本地的master进行merge &#xff0c…

机器人系统ros2-开发学习实践16-RViz 用户指南

RViz 是 ROS&#xff08;Robot Operating System&#xff09;中的一个强大的 3D 可视化工具&#xff0c;用于可视化机器人模型、传感器数据、路径规划等。以下是RViz用户指南&#xff0c;帮助你了解如何使用RViz来进行机器人开发和调试。 启动可视化工具 ros2 run rviz2 rviz2…

css-Ant-Menu 导航菜单更改为左侧列表行选中

1.Ant-Menu导航菜单 导航菜单是一个网站的灵魂&#xff0c;用户依赖导航在各个页面中进行跳转。一般分为顶部导航和侧边导航&#xff0c;顶部导航提供全局性的类目和功能&#xff0c;侧边导航提供多级结构来收纳和排列网站架构。 2.具体代码 html <!-- 左侧切换 --><…

15、matlab绘图汇总(图例、标题、坐标轴、线条格式、颜色和散点格式设置)

1、plot()函数默认格式画图 代码: x=0:0.1:20;%绘图默认格式 y=sin(x); plot(x,y) 2、X轴和Y轴显示范围/axis()函数 代码: x=0:0.1:20;%绘图默认格式 y=sin(x); plot(x,y) axis([0 21 -1.1 1.1])%设置范围 3、网格显示/grid on函数 代码: x=0:0.1:20;%绘图默认格式 …

CXL (1)

为什么有CXL CXL说到底 是为了打破内存墙而生的 CXL全称是Compute Express Link&#xff0c; 可以用来连接CPU&#xff0c;以及其他任何计算单元&#xff0c;比如GPU。 CXL和PCIe跑在一样的physical layer上&#xff0c;与PCIe不一样的是&#xff0c;CXL允许CPU和连接的设备共…

(文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略

参考文献&#xff1a; [1]潘虹锦,高红均,杨艳红,等.基于主从博弈的售电商多元零售套餐设计与多级市场购电策略[J].中国电机工程学报,2022,42(13):4785-4800. 1.摘要 随着电力市场改革的发展&#xff0c;如何制定吸引用户选择的多类型零售套餐成为提升售电商利润的研究重点。为…

wms中对屏幕进行修改wm size设置屏幕宽高原理剖析

背景&#xff1a; 上面是正常屏幕1440x2960的屏幕大小&#xff0c;如果对display进行相关的修改&#xff0c;可以使用如下命令&#xff1a; adb shell wm size 1080x1920 得出如下的画面 明显看到差异就是屏幕上下有黑边了&#xff0c;那么下面就来调研这个wm size是怎么做的…

水库大坝安全监测系统建设方案

一、背景 随着自动化技术的进步&#xff0c;大部分水库大坝不同程度地实现了安全监测自动化。但仍存在以下问题&#xff1a; 1、重建轻管&#xff0c;重视安全监测系统建设&#xff0c;不够重视运行维护。 2、缺乏系统性、综合性及相关性的资料分析功能。 3、软件大多为数据…

harbor 只读模式修改

The system is in read only mode. Any modification is prohibited。 使用harbor时&#xff0c;做了一个定时清理任务&#xff0c;可能是因为任务失败或者某种原因导致的&#xff0c;系统一直处于只读模式&#xff0c;以为是要看一些表结构&#xff0c;然后去修改参数&#xf…

2.2数据的表示和运算--原码、反码、补码、移码

2.数据的表示和运算 2.2原码、反码、补码、移码 &#x1f53a;问题&#xff1a;真值与对应的原码、反码、补码变换规则&#xff1f; 答&#xff1a; 正数&#xff1a;原码、反码、补码都一样。 负数&#xff1a;原码不变、反码除符号位其它各位取反、补码在反码基础上再加…

结合视差补偿与3D数据处理的盲光场图像质量评价

摘要&#xff1a;与传统的2D图像相比&#xff0c;光场图像记录了场景中光线的强度和方向信息&#xff0c;在多媒体技术应用领域中占据着重要的地位。但在光场图像的产生、传输等处理过程中会不可避免地引入失真&#xff0c;影响用户视觉体验&#xff0c;因而需构建有效、准确的…

从 0 到 1 带你认识 Git 在个人和企业开发中的原理及应用

文章目录 学习目标Git 初识提出问题如何解决&#xff1f;—— 版本控制器注意事项 Git 安装Linux CentOSLinux UbuntuWindows Git 基本操作创建 Git 本地仓库配置 Git 认识工作区、暂存区、版本库添加文件——场景一查看 .git 文件 添加文件——场景二 修改文件版本回退 学习目…

浏览器渲染优--防抖节流懒加载

合理选择css选择器 相比于.content-title-span&#xff0c;使用.content .title span时&#xff0c;浏览器计算样式所要花费的时间更多。使用后面一种规则&#xff0c;浏览器必须遍历页面上所有 span 元素&#xff0c;先过滤掉祖先元素不是.title的&#xff0c;再过滤掉.title…