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);
var imgsrc = c.toDataURL("image/png",1);
   注意:这一行就是把canvas绘制的图形变成图片,imgsrc为base64格式!
    };}
/*
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生成图片的注意点!相关推荐

  1. H5画布 canvas(一)canvas简介、绘制圆形矩形、案例饼状图绘制

    目录 1. canvas 简介 2. canvas 标签介绍 3. canvas 上下文 Context 4. 案例:在 canvas 画布中绘制表格 5. canvas 的 beginPath 状态 ...

  2. H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制

    目录 1. canvas 简介 2. canvas 标签介绍 3. canvas 上下文 Context 4. 案例:在 canvas 画布中绘制表格 5. canvas 的 beginPath 状态 ...

  3. php绘制频谱图,H5的Canvas如何实现绘制音乐环形频谱图

    这次给大家带来H5的Canvas如何实现绘制音乐环形频谱图,H5Canvas实现绘制音乐环形频谱图的注意事项有哪些,下面就是实战案例,一起来看一下. 在B站我们有很多的小伙伴们应该都看到过用AE做的可 ...

  4. 关于H5页面中生成图片的两种方式!

    前言: 我们在做项目过程中,经常会遇到自定义生成一张图片并可以长按保存.长按保存图片在微信等浏览器中默认就有,那么对于生成图片的有哪些方式呢? 方法一: 利用canvas绘制图形,然后生成图片 代码如 ...

  5. H5使用Canvas模板设计签名并将图片保存到本地

    最近在工作中遇到一个需求,自定义签名并将签名返回到页面上,为了方便以后遇到这种请求不在到处找资料,所以就想把这个需求记录下来 h5的Canvas自定义模板 页面代码:canvas前端代码: <d ...

  6. 用h5的canvas实现动画的泡沫

    效果图一 代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...

  7. 最简单太阳系H5动画canvas详解 零基础可入

    最简单太阳系H5动画canvas详解 零基础可入 最终结果:(实际为动画效果,金星绕轨道转动) 页面准备/html 要使用canvas,需要首先在页面中要绘制的位置放入canvas标签元素,在后期的绘 ...

  8. h5动画 php,用H5的canvas做恐怖动画

    这次给大家带来用H5的canvas做恐怖动画,用H5的canvas做恐怖动画的注意事项有哪些,下面就是实战案例,一起来看一下. canvas可以实现一些有趣的效果,动画实现.以一个简单的页面实现了解一 ...

  9. canvas生成图片上传服务器,网络图片生成图片文件

    vue+canvas 生成签名图片并保存数据库 VUE+ElementUI 最近根据项目需求 在用户生成订单的时候需要附上自己的签名照片,因为考虑到不能上传图片所以使用canvas画图功能. 而目前后 ...

最新文章

  1. Python3中PyMongo使用举例
  2. 【caffe】基本数据结构blob
  3. hbuilderx的快捷键整理pdf_47个电脑快捷键大全,让你工作提升100倍,一般人我不告诉他...
  4. 最简单的基于DirectShow的示例:视频播放器图形界面版
  5. openwrtx 安装无线_面向工业物联网的远距离无线输电技术
  6. 我与电脑1-初识电脑
  7. 【wikioi】1014 装箱问题
  8. Shell 获取进程号
  9. paip.提升用户体验---c++ 悬浮窗体以及右键菜单以及socket接口
  10. 计算机在酒店与应用中的展望,对酒店计算机信息管理系统的分析与展望
  11. 微信小程序 - 实现简单登录和个人信息页面
  12. Java代码审查工具 FindBugs下载、安装和使用(无需集成环境一键安装使用)
  13. python修改桌面壁纸_轻松有趣的Python小案例,让电脑自动更换壁纸
  14. java服务监控并发送邮件_详解Spring Boot Admin监控服务上下线邮件通知
  15. Redisson分布式调度任务小栗子
  16. 辅助驾驶功能开发-功能规范篇(04)- 交通拥堵辅助及集成式巡航辅助TJA/ICA
  17. 四、PHP处理字符串常用函数
  18. 大脑笔记:快速记忆之三大方法记忆圆周率前一百位
  19. Ubcoin市场:加密货币-商品交易平台
  20. Excel双条件交叉查询

热门文章

  1. WinDbg排查.net性能或内存问题步骤简述
  2. 计算机主机内置音箱,如何使Realtek声卡分别区分内置扬声器和耳机?
  3. STM32F103输出PWM
  4. 铸造工艺问题2——倾斜浇注高度,好处,注意事项?什么是大孔出流理论?灰铸铁有一定的自补缩能力,为什么还要设置冒口?什么是孕育处理?
  5. 易语言+精易模块 访问百度api案例
  6. 直链文件服务器,山寨云直链 服务器拒绝
  7. PFC2D学习笔记——刚性簇(clump)生成
  8. MySQL是什么及发展历程
  9. 戴尔科技ד欧洲麻省理工”| 将智能洞察推向工业边缘
  10. C++数据共享与保护static活期存款篇