<input type="text" placeholder="请输入公司名称" bindinput="bindInputCompany" value="{{company}}" />
<canvas type="2d" id="circleBar" style="width: 400rpx;height:400rpx;margin: 30rpx auto;"></canvas>
<button type="primary" bindtap="comCreateSeal">生成公章</button>
Page({data: {company: "",//name: "专用章"},onShow() {},// 请输入公司名bindInputCompany(e) {this.setData({company: e.detail.value.trim()})},// 生成公章comCreateSeal() {if (!this.data.company) {wx.showToast({title: '请输入公司名称',icon: 'none',})return}var context1 = wx.createCanvasContext('circleBar');console.log(context1);const opts = {company: this.data.company, // 机构名称companyTight: false, // 公司名称是否紧凑(//false 散开型   true紧凑)//name: this.data.name}this.createSelectorQuery().select('#circleBar').fields({node: true,size: true,}).exec((res) => {console.log(res)const canvas = res[0].node;const context = canvas.getContext('2d');context.fillStyle = 'rgba(255, 255, 255, 0)';// 绘制印章边框canvas.width = res[0].widthcanvas.height = res[0].heightconst width = canvas.width / 2;const height = canvas.height / 2;context.lineWidth = 3;context.strokeStyle = "#f00";context.beginPath();context.arc(width, height, 78, 0, Math.PI * 2);context.stroke();context.save();//画五角星context.save();context.fillStyle = "#f00";context.translate(width, height); //移动坐标原点context.rotate(Math.PI + 0); //旋转context.beginPath(); //创建路径var x = Math.sin(0);var y = Math.cos(0);var dig = Math.PI / 5 * 4;for (var i = 0; i < 5; i++) { //画五角星的五条边var x = Math.sin(i * dig);var y = Math.cos(i * dig);context.lineTo(x * 25, y * 25);}context.closePath();context.stroke();context.fill();context.restore();// 绘制印章名称context.font = '18px Helvetica';context.textBaseline = 'middle'; //设置文本的垂直对齐方式context.textAlign = 'center'; //设置文本的水平对对齐方式context.lineWidth = 1;context.fillStyle = '#f00';// context.fillText(opts.name,width,height+53);// 绘制印章单位context.translate(width, height); // 平移到此位置,var count = opts.company.length; // 字数if (count > 14) {var maxCount = 18;context.font = '16px Helvetica'if (opts.companyTight) {var angle = 4 * Math.PI / 51; // 字间角度} else {var angle = 4 * Math.PI / (3 * (count - 1)); // 字间角度}} else {var maxCount = 14;context.font = '20px Helvetica'if (opts.companyTight) {var angle = 4 * Math.PI / 39; // 字间角度} else {var angle = 4 * Math.PI / (3 * (count - 1)); // 字间角度}}var chars = opts.company.split("");var c;for (var i = 0; i < count; i++) {c = chars[i]; // 需要绘制的字符if (i == 0) {if (opts.companyTight) {context.rotate(5 * Math.PI / 6 + angle * ((maxCount - count) / 2));} else {context.rotate(5 * Math.PI / 6);}} else {context.rotate(angle);}context.save();context.translate(64, 0); // 平移到此位置,此时字和x轴垂直context.rotate(Math.PI / 2); // 旋转90度,让字平行于x轴context.fillText(c, 0, 5); // 此点为字的中心点context.restore();}wx.canvasToTempFilePath({canvasId: 'circleBar',canvas: canvas,x: 0,y: 0,width: 260,height: 260,destWidth: 260,destHeight: 260,success(res) {console.log('图片临时路径:', res.tempFilePath)},fail(res) {console.error(res)}})})},
});

微信小程序 输入文字用canvas生成公章并转为图片相关推荐

  1. 微信小程序踩坑记录 ------- canvas 生成带小程序码的微信朋友圈分享图

    最近做了一个问卷类的小程序,其中的结果页想让用户进行朋友圈分享转发,网上搜索资料,得出解决思路,用 canvas 将页面绘制生成图片,然后保存到手机相册,最终效果如下: 在这里我只写页面里关于 can ...

  2. 微信小程序点击按钮弹窗生成二维码图片+长按识别

    框架:uni-app 库:Painter ui框架:uView 1.X <u-modal class="show-close" v-model="showClose ...

  3. 微信小程序webview页面使用painter生成海报

    微信小程序webview页面使用painter生成海报 因为要在webview下生成海报,需要使用cover-view,根据接口返回数据动态更新海报内容,微信小程序生成海报组件有wxa-plugin- ...

  4. 微信小程序:爱情保证书制作生成

    这是一款开启保证数生成制作的一款小程序 支持一键生成情侣爱情保证图 只需输入 你和另一半姓名,再加上时间即可一键生成 然后长按就可以保存了 安装方法: 使用微信开发者工具打开源码 然后提交上传审核就可 ...

  5. 微信小程序子组件使用canvas无效,线条画不出颜色

    微信小程序子组件使用canvas无效,线条画不出颜色 小程序中在page中直接使用canvas是这样使用的: // canvas 全局配置 var context = null; Page({data ...

  6. c语言小程序跑马灯,微信小程序实现文字跑马灯效果

    本文实例为大家分享了微信小程序实现文字跑马灯的具体代码,供大家参考,具体内容如下 wxml 1 显示完后再显示 Box"> 2 出现白边后即显示 Box"> {{tex ...

  7. 微信小程序 输入车牌号(有新能源)

    微信小程序 输入车牌号(有新能源) <view class="page"><!-- 车牌号码输入框 --><view class="carN ...

  8. 微信小程序:流量主制作生成装逼工具

    这是一款流量主制作生成小工具 支持小程序流量主图制作生成 也支持公众号的流量主制作生成 每一种制作都包含了所有的流量主模式 用户自己填写选择制作就可以了! 小程序源码下载地址: 微信小程序:流量主制作 ...

  9. 小程序如何做成html的滚动字幕,微信小程序实现文字滚动

    本文实例为大家分享了微信小程序实现文字滚动的具体代码,供大家参考,具体内容如下 wxml: 显示完后再显示: {{text}} 出现白边后即显示: {{text}} {{text}} wxss: .e ...

最新文章

  1. mysql常见增量恢复方式_MySQL 全备份与增量备份 全恢复与增量恢复
  2. 并查集专题练习:好朋友(未完待续)
  3. 11 款可替代 top 命令的工具!
  4. 转载: Qt 学习之路 2归档
  5. PhoneGap app 性能研究小结(2013网页装在兜里)
  6. RabbitMQ的消费限流
  7. appium和selenium不同与相同之处
  8. matlab中bwlabel意思,Matlab 里bwlabel 函数的具体含义
  9. mysql日志监控 zabbix_zabbix监控mysql哪些性能
  10. Audio Session Programming Guide
  11. 刷新率调高,或高于60Hz闪屏,忽明忽暗,晃动问题
  12. 利用反射和lambda获取变量名字
  13. html编辑plist文件,Swift开发:Info.plist文件的常见配置
  14. Visual C++ 2010 Express 下载及详细安装教程(VC2010)
  15. Python面向对象加强2.Python 中类的内置属性和内置方法(魔法函数)
  16. Golang hijack 劫持
  17. 修改hexo的主题nexT中的Pisces主题宽度
  18. E4A 易安卓一些常见的小问题
  19. 蘑菇街 App 的组件化之路
  20. 计算机科学数学基础及教材推荐(转)

热门文章

  1. 机器学习入门-西瓜书总结笔记第十五章
  2. ThinkCMF图片上传
  3. 计算机科学与技术 研究生 缩招,2021考研招生最新信息汇总(扩招、缩招、停招、首招)...
  4. 卓训教育:儿童哭闹买玩具,家长该怎么办?
  5. 迷你型云台摄像头组装方法
  6. 单行和多行文字溢出显示省略号
  7. 常用的库代码段pytorch_based【tips】
  8. dsm是基于linux什么版本,DSM 文件扩展名: 它是什么以及如何打开它?
  9. msgpack-c 官方文档整理翻译之pack
  10. Windows远程代码执行漏洞(CVE-2020-16898) 高危漏洞加固指南