微信小程序 canvas海报
canvas描述的比较详细: https://blog.csdn.net/abs625/article/details/100170552
// 遮罩层滚动穿透 myCatchTouch: function () { return; }, //画布 share: function (e) { var that = this; var thumb = that.data.info.thumb; var erweima = that.data.info.erweima var base_thumb = that.data.info.base_thumb; var title = that.data.info.title; wx.getSystemInfo({ success: (res) => { var rpx = res.windowWidth / 750 var ctx = wx.createCanvasContext('share') //绑定canvas ctx.setFillStyle('#fff') ctx.fillRect(0, 0, 580 * rpx, 776 * rpx) //绘制矩形 // 顶部图片 wx.getImageInfo({ //获取图片信息 src: thumb, success: res => { ctx.drawImage(res.path, 0, 0, 580 * rpx, 580 * rpx) //图片 // 二维码图片 wx.getImageInfo({ //获取图片信息 src: erweima, success: res1 => { ctx.drawImage(res1.path, 424 * rpx, 600 * rpx, 130 * rpx, 130 * rpx) ctx.setFontSize(24 * rpx) //字体大小 ctx.setFillStyle('#333') //字体颜色 ctx.setTextAlign('left') // 文字 if (title > 20) { //省略号 ctx.fillText(title, 20 * rpx, 622 * rpx) } else { var stateText = title.substring(0, 20) var endText = title.substring(20, 37) ctx.fillText(stateText, 20 * rpx, 622 * rpx) ctx.fillText(endText + '...', 20 * rpx, 655 * rpx) } wx.getImageInfo({ //获取图片信息 src: base_thumb, success: res2 => { ctx.drawImage(res2.path, 20 * rpx, 670 * rpx, 160 * rpx, 100 * rpx) ctx.setFillStyle('#333') ctx.setFontSize(20 * rpx) ctx.fillText('长按二维码预定,分享更可赚佣金呦', 245 * rpx, 755 * rpx) ctx.draw(true) } }) } }) } }) }, }) }, //保存网络图片到相册方法 saveToBlum: function () { wx.canvasToTempFilePath({ canvasId: 'share', //与canvasid保持一致 success:function(res1){ wx.saveImageToPhotosAlbum({ filePath: res1.tempFilePath, success(result) { wx.showToast({ title: '保存成功', icon: 'success' }) } }) } }) },
<view class="cavansZhe" wx:if="{{canvasType}}" catchtouchmove="myCatchTouch"> <canvas canvas-id="share" class="canvas" bindlongtap="saveImg" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd"></canvas> <view class="fs32">长按图片保存或发送给好友</view> <image bindtap="canvasClose" src="/hyb_travel/order/images/close_white.png" mode="widthFix" style="width:76rpx;height:76rpx;margin-top:36rpx"></image> </view> <!-- bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd" 防止海报滑动-->
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】