uniapp画图 uni.createcanvascontext

这篇具有很好参考价值的文章主要介绍了uniapp画图 uni.createcanvascontext。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:分享图片,图片上下内容固定,中间内容动态获取

步骤:

1.用uni.createcanvascontext绘制图片

html

<canvas canvas-id="save-picture" v-if='toPicture' :disable-scroll="true"style="width: 350px;height: 520px;"></canvas>

js

//需要指定 canvasId,该绘图上下文只作用于对应的 <canvas/>
const ctx = uni.createCanvasContext("save-picture", this);
//第一个参数是canvasId,第二个参数自定义组件实例 this ,表示在这个自定义组件下查找拥有 canvas-id 的 <canvas/> ,如果省略,则不在任何自定义组件内查找

2.开始画图(部分代码)

ctx.setFillStyle('#fff'); // 背景颜色,相当于view的背景颜色
ctx.fillRect(0, 0, 350, 530) // fillRect(x,y,宽度,高度),相当于view的位置,宽高
let logoImgUrl = '/static/image/share_logo.png' //协会logo
ctx.drawImage(logoImgUrl , 10, 175, 100, 120) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度)
ctx.setFontSize(16) // 字号
ctx.setFillStyle('#fff') // 字体颜色,默认黑色
ctx.fillText('编号:' + this.code,, 105, 30)//文字fillText(文字,x,y)
//走失详细信息 换行,超过两行隐藏
this.content = this.miss_time + '在' + this.address_detail + '走失'
/*canvas不能自动换行,需要自行计算 */
let _strlineW = 0;
let _strLastIndex = 0; //每次开始截取的字符串的索引
let _strHeight = 275; //绘制字体距离canvas顶部的初始高度
let _num = 1;
for (let i = 0; i < this.content.length; i++) {
    _strlineW += ctx.measureText(this.content[i]).width;
	if (_strlineW > this.canvasW - 125) {
	    if (_num == 2 && 2) {
		    //文字换行数量大于二进行省略号处理
			ctx.fillText(this.content.substring(_strLastIndex, i - 5) + '...', 120, _strHeight);
			_strlineW = 0;
			_strLastIndex = i;
			_num++;
			break;
		} else {
			ctx.fillText(this.content.substring(_strLastIndex, i), 120, _strHeight);
			_strlineW = 0;
			_strHeight += 20;
			_strLastIndex = i;
			_num++;
		}
	} else if (i == this.content.length - 1) {
		ctx.fillText(this.content.substring(_strLastIndex, i + 1), 120, _strHeight);
		_strlineW = 0;
	}
}

3.注意

绘制图片cxt.drawImage时图片路径只能是本地路径,若为网络地址可使用getImageInfo转换为本地路径,例:

var _this = this
uni.getImageInfo({
	src: _this.photo, //网络图片路径
	success(res) {
		_this.headImg = res.path
		console.log('本地路径', _this.headImg)
	}
})

若图片下层有背景颜色,需绘制块完成后再绘制图片,例:

// 4.绘制底部
ctx.setFillStyle('#808080'); // 默认白色
ctx.fillRect(0, 390, 350, 35) // fillRect(x,y,宽度,高度)
ctx.drawImage(ewmImgUrl, 255, 430, 80, 80) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度)

4.生成图片。全部绘制完成后绘制图片文章来源地址https://www.toymoban.com/news/detail-622313.html

ctx.draw(true,() => {
    uni.canvasToTempFilePath({
        canvasId: "save-picture",
		width: 376 * 4,
		height: 500 * 4,
		quality: 1,
		fileType: 'jpg',
        success: (res) =>{
            console.log('绘制成功', res.tempFilePath);
            //生成图片后的逻辑方法
        }
    },_this)
})

到了这里,关于uniapp画图 uni.createcanvascontext的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app小程序实现音频播放,uniapp播放录音,uniapp简单实现播放录音

    复制到.vue文件即可预览效果 问题 :开发者工具中.onTimeUpdate方法可能会失效! 官方参考:https://uniapp.dcloud.net.cn/api/media/audio-context.html# 其他博客参考:https://blog.csdn.net/weixin_45328705/article/details/114091301 录音实现参考 :https://blog.csdn.net/weixin_43992507/article/details/129857780

    2024年02月12日
    浏览(39)
  • 【uni-app教程】四、UniAPP 路由配置及页面跳转

    uni-app 页面路由为框架统一管理,开发者需要在pages.json里配置每个路由页面的路径及页面样式。类似小程序在 app.json 中配置页面路由一样。所以 uni-app 的路由用法与 Vue Router 不同,如仍希望采用 Vue Router 方式管理路由,可在插件市场搜索 Vue-Router。 uni-app 有两种页面路由跳转

    2024年01月16日
    浏览(60)
  • 【UniApp】-uni-app-项目实战页面布局(苹果计算器)

    经过前面的文章介绍,基本上 UniApp 的内容就介绍完毕了 那么从本文开始,我们就开始进行一个项目的实战 这次做的项目是苹果计算器,这个项目的难度不是很大,但是也不是很简单,适合练手 打开 HBuilderX,点击左上角 文件 - 新建 - 项目 : 项目创建完毕之后,首先来分析

    2024年02月04日
    浏览(41)
  • #Uniapp:uni-app中vue2生命周期--11个

    uni-app中vue2生命周期 生命周期钩子 描述 H5 App端 小程序 说明 beforeCreate 在实例初始化之后被调用 详情 √ √ √ created 在实例创建完成后被立即调用 详情 √ √ √ beforeMount 在挂载开始之前被调用 详情 √ √ √ mounted 挂载到实例上去之后调用 详情 注意:此处并不能确定子组件

    2024年02月02日
    浏览(39)
  • 【Uni-App】uniapp使用uview实现弹出键盘输入密码/验证码功能

    组件使用的是uview组件,Keyboard 键盘和MessageInput 验证码输入两个组件配合使用。 通过mode参数定义键盘的类型,v-model绑定一个值为布尔值的变量,我绑定的是showKeyboard变量,控制键盘的弹出与收起; mode = number (默认值)为数字键盘,此时顶部工具条中间的提示文字为\\\"数字键盘

    2023年04月16日
    浏览(39)
  • miniprogram-to-uniapp使用指南(各种小程序项目转换为uni-app项目)

    小程序分类:uni-app qq小程序 支付宝小程序 百度小程序 钉钉小程序 微信小程序 小程序转成uni_app 小程序转为uni_app 小程序转uni_app 小程序转换 工具现在支持npm全局库、HBuilderX插件两种方式使用,任君选择,HBuilderX插件地址:https://ext.dcloud.net.cn/plugin?id=2656 【miniprogram-to-uniapp】

    2024年02月08日
    浏览(35)
  • 【uni-app】【Android studio】手把手教你运行uniapp项目到Android App

    选择运行到Android App基座 选择运行项目 1、连接手机,在手机上选择 传输文件。 2、打开 设置 - 关于本机 - 版本信息 -连续点击4-5次 版本号 ,输入手机密码,系统就进入了开发者模式。 3、 设置 其他设置 开发者选项 打开 开发者选项 打开 USB调试 。 4、回到Hbuilder,点击刷新

    2024年02月09日
    浏览(38)
  • uni-app的优缺点;uniapp进行条件编译的两种方法;小程序端和H5的代表值

    目录 uni-app的优缺点 优点: 1.跨平台开发: 2.统一的开发语言: 3.高效的性能: 4.丰富的生态圈: 缺点: 1.平台差异性: 2.性能限制: 3.对新特性支持滞后: Uni-app条件编译 process.env.UNI_PLATFORM 变量: 使用 process.env.NODE_ENV 变量: Uni-app中的代表值 Uni-app 是一个跨平台的开发框架

    2024年02月08日
    浏览(38)
  • 基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    最近得空学习了下uniapp结合vue3搭建跨端项目。之前也有使用uniapp开发过几款聊天/仿抖音/后台管理等项目,但都是基于vue2开发。随着vite.js破局出圈,越来越多的项目偏向于vue3开发,就想着uniapp搭配vite4.x构建项目效果会如何?经过一番尝试果然真香~ uniapp官网提供了  HBuild

    2024年02月09日
    浏览(49)
  • 【uni-app】UniApp实现微信小程序中拨打手机电话和长按加微信客服好友(完整代码示例)

    UniApp实现微信小程序中拨打手机电话和长按加微信客服好友(完整代码示例)

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包