关于h5绘制canvas生成图片的注意点!
1、第一个是关于移动端自适应的问题:
答:如果是最后只要一张canvas生成的图片,而不是要绘制的canvas的图形,则不需要考虑自适应,绘制canvas的时候的宽高,可以直接写成UI提供的图的大小,比如UI提供的图是 750 * 1280 ,则绘制canvas的时候,所有的数据都可以
以375*640来进行计算,固定好即可!这个跟后台绘制图片的原理一样,我们不需要考虑自适应,ui给什么图,或者说我们希望要多大的图片,我们直接绘制即可,因为图片最后自己可以按比例伸缩,默认即是自适应!
2、关于H5绘制canvas的多行文本,我们可以利用测量宽度进行自动换行绘制文字!
3、绘制图片完成后再绘制文字,即可解决文字在图片底部的问题!
具体代码如下:
/*** 绘制canvas*/ function draw(name='大威德', score = 23, level = 1, str = '哈哈哈哈') {var c = document.getElementById("canvas");var ctx = c.getContext("2d");// 绘制背景var img = new Image();img.src = "images/newbg.jpg";img.onload = function () {ctx.drawImage(img, 0, 0,375,640);// 绘制底部文字ctx.font = "bold normal 20px Microsoft YaHei";ctx.fillStyle = "black";ctx.fillText(name, 375 * 0.18, 640 * 0.34);ctx.font = "bold normal 20px Microsoft YaHei";ctx.fillStyle = "red";ctx.fillText(score, 375 * 0.63, 640 * 0.345);ctx.fillStyle = "black";ctx.fillText(level, 375 * 0.37, 640 * 0.458);ctx.font = "normal 18px Microsoft YaHei";ctx.fillStyle = "black";// 绘制多行文字canvasTextAutoLine(str, c, 375 * 0.1, 640 * 0.5, 20);
};} /* str:要绘制的字符串 canvas:canvas对象 initX:绘制字符串起始x坐标 initY:绘制字符串起始y坐标 lineHeight:字行高,自己定义个值即可 */ function canvasTextAutoLine(str, canvas, initX, initY, lineHeight) {var ctx = canvas.getContext("2d");var lineWidth = 0;var canvasWidth = document.documentElement.clientWidth;var lastSubStrIndex = 0;for (let i = 0; i < str.length; i++) {lineWidth += ctx.measureText(str[i]).width;if (lineWidth > canvasWidth * 0.8) {//减去initX,防止边界出现的问题 ctx.fillText(str.substring(lastSubStrIndex, i), initX, initY);initY += lineHeight;lineWidth = 0;lastSubStrIndex = i;}if (i == str.length - 1) {ctx.fillText(str.substring(lastSubStrIndex, i + 1), initX, initY);}} }
转载于:https://www.cnblogs.com/teamemory/p/9767030.html
关于h5绘制canvas生成图片的注意点!相关推荐
- H5画布 canvas(一)canvas简介、绘制圆形矩形、案例饼状图绘制
目录 1. canvas 简介 2. canvas 标签介绍 3. canvas 上下文 Context 4. 案例:在 canvas 画布中绘制表格 5. canvas 的 beginPath 状态 ...
- H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制
目录 1. canvas 简介 2. canvas 标签介绍 3. canvas 上下文 Context 4. 案例:在 canvas 画布中绘制表格 5. canvas 的 beginPath 状态 ...
- php绘制频谱图,H5的Canvas如何实现绘制音乐环形频谱图
这次给大家带来H5的Canvas如何实现绘制音乐环形频谱图,H5Canvas实现绘制音乐环形频谱图的注意事项有哪些,下面就是实战案例,一起来看一下. 在B站我们有很多的小伙伴们应该都看到过用AE做的可 ...
- 关于H5页面中生成图片的两种方式!
前言: 我们在做项目过程中,经常会遇到自定义生成一张图片并可以长按保存.长按保存图片在微信等浏览器中默认就有,那么对于生成图片的有哪些方式呢? 方法一: 利用canvas绘制图形,然后生成图片 代码如 ...
- H5使用Canvas模板设计签名并将图片保存到本地
最近在工作中遇到一个需求,自定义签名并将签名返回到页面上,为了方便以后遇到这种请求不在到处找资料,所以就想把这个需求记录下来 h5的Canvas自定义模板 页面代码:canvas前端代码: <d ...
- 用h5的canvas实现动画的泡沫
效果图一 代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...
- 最简单太阳系H5动画canvas详解 零基础可入
最简单太阳系H5动画canvas详解 零基础可入 最终结果:(实际为动画效果,金星绕轨道转动) 页面准备/html 要使用canvas,需要首先在页面中要绘制的位置放入canvas标签元素,在后期的绘 ...
- h5动画 php,用H5的canvas做恐怖动画
这次给大家带来用H5的canvas做恐怖动画,用H5的canvas做恐怖动画的注意事项有哪些,下面就是实战案例,一起来看一下. canvas可以实现一些有趣的效果,动画实现.以一个简单的页面实现了解一 ...
- canvas生成图片上传服务器,网络图片生成图片文件
vue+canvas 生成签名图片并保存数据库 VUE+ElementUI 最近根据项目需求 在用户生成订单的时候需要附上自己的签名照片,因为考虑到不能上传图片所以使用canvas画图功能. 而目前后 ...
最新文章
- Python3中PyMongo使用举例
- 【caffe】基本数据结构blob
- hbuilderx的快捷键整理pdf_47个电脑快捷键大全,让你工作提升100倍,一般人我不告诉他...
- 最简单的基于DirectShow的示例:视频播放器图形界面版
- openwrtx 安装无线_面向工业物联网的远距离无线输电技术
- 我与电脑1-初识电脑
- 【wikioi】1014 装箱问题
- Shell 获取进程号
- paip.提升用户体验---c++ 悬浮窗体以及右键菜单以及socket接口
- 计算机在酒店与应用中的展望,对酒店计算机信息管理系统的分析与展望
- 微信小程序 - 实现简单登录和个人信息页面
- Java代码审查工具 FindBugs下载、安装和使用(无需集成环境一键安装使用)
- python修改桌面壁纸_轻松有趣的Python小案例,让电脑自动更换壁纸
- java服务监控并发送邮件_详解Spring Boot Admin监控服务上下线邮件通知
- Redisson分布式调度任务小栗子
- 辅助驾驶功能开发-功能规范篇(04)- 交通拥堵辅助及集成式巡航辅助TJA/ICA
- 四、PHP处理字符串常用函数
- 大脑笔记:快速记忆之三大方法记忆圆周率前一百位
- Ubcoin市场:加密货币-商品交易平台
- Excel双条件交叉查询
热门文章
- WinDbg排查.net性能或内存问题步骤简述
- 计算机主机内置音箱,如何使Realtek声卡分别区分内置扬声器和耳机?
- STM32F103输出PWM
- 铸造工艺问题2——倾斜浇注高度,好处,注意事项?什么是大孔出流理论?灰铸铁有一定的自补缩能力,为什么还要设置冒口?什么是孕育处理?
- 易语言+精易模块 访问百度api案例
- 直链文件服务器,山寨云直链 服务器拒绝
- PFC2D学习笔记——刚性簇(clump)生成
- MySQL是什么及发展历程
- 戴尔科技ד欧洲麻省理工”| 将智能洞察推向工业边缘
- C++数据共享与保护static活期存款篇