HTML新特性--canvas绘图-文本
一、html5新特性--canvas绘图-文本(重点)
#常用方法与属性
-ctx.strokeText(str,x,y); 绘制描边文字(空心)
str:绘制文本
x,y:字符串左上角位置(以文本基线为准)
-ctx.fillText(str,x,y); 绘制填充文字(实心)
-ctx.font="19px SimHei"; 前面文本大小/字体
-ctx.textBaseline = "top"; 调整文本基线[top/alphabetic/bottom]
二、HTML5新特性--canvas绘图-路径 (重点)
路径:绘制不规则图形 (复杂)
path:由多个坐标点组件任意图形,图形本身不可见
可以描边或者填充
-ctx.beginPath(); 开始一条新路径(上一条路径结束)
-ctx.moveTo(x,y); 移动到指定点(x,y)
-ctx.lineTo(x,y); 从当前点到指定点绘制一条直线(x,y)
-ctx.stroke(); 描边
-ctx.fill(); 填充
-ctx.closePath(); 闭合一条路径(结束点到开始点画一条直线)
-ctx.arc(cx,cy,r,start,end); 绘制一条圆拱形
cx,cy 圆心位置(x,y)
r 半径
start 开始角度
end 结束角度
#参数start,end 不使用常用角度完成设置,使用弧度设置
#角度 0~360 弧度0~2PI
#采用角度转换弧度 90角度*Math.PI/180=弧度
三、HTML5新特性--canvas绘图-图像 (重点)
#?图片可以使用img标准显示网页为什么用canvas[复杂]
#?图片位置:一个软件项目所有图片保存服务器
(1)图片版权
(2)图片数量巨大
#操作过程将图片绘制canvas画布上
(1)创建图像对象 p3 = new Image();
(2)下载图像 p3.src = "p3.png"; //2ms
(3)为图片绑定事件下载成功 p3.onload = function(){...}
(4)绘制图片 ctx.drawImage(p3,x,y)
(4)绘制图片 ctx.drawImage(p3,x,y,w,h)
#p3 图片对象
#x,y 图片或者文本或者图片左上角位置(原始大小图片)
#w,h 图片宽度和高度(拉伸)
四、HTML5新特性--canvas绘图-变形 (重点)
canvas绘制时对图片进行旋转操作
-rotate(deg) 旋转
(1)旋转画笔对象
(2)旋转轴心在画布原点
(3)旋转角度会有累加操作
(4)deg不同角度弧度
-translate(x,y) 移动原点(移动轴心)到指定位置
#原则:什么时候使用如下两个方法
#当画布上绘制一个以上元素时必须使用下面方法
-save() 保存画笔状态(原点;角度;颜色;...)
-restore() 恢复到画笔保存时状态(原点;角度;颜色;..)
#画图时:如果画布中有多个(一个以上)元素,画之前先保存状态
#画之后恢复状态(元素之间不会受到影响)
五、HTML5新特性--canvas绘图-变形 (弹幕)
#弹幕:专业视频网站常用功能
当用户在观看视频希望(参与感)发表自己想法
情绪/观点
发表内容转文字浮动视频上方
#理解用户操作
(1)输入文字 修改文字大小;修改文字颜色
(2)用户点击"发送按钮" 将内容显示视频上方
#(#)项目工作流程!!!
(1)遇到问题:如果发送文字过多效率有一定影响
解决方案:池子
(2)创建程序结构
当设计大规则项目采用方式:
单一原则(一个程序完成一种任务)
#第一个程序:index.html
(1)创建元素 显示视频 画布
(2)加载其它 js
#第二个程序:msg.js 完成所有弹幕任务(一家餐厅)
#第三个程序:main.js 项目入口程序:调用msg.js 方法(大楼主管)
六、6.1 HTML5新特性-- -变形 (弹幕)-index.html
(1)视频元素:video #底层 z-index:0
(2)画布元素: canvas #上层 z-index:1
(3)创建输入区域
[输入文字区域;文字大小下拉列表;文字颜色下拉列表;发送按钮]
(4)加载main.js 文件(主管)
(5)加载msg.js 文件(一家餐厅)
6.2 HTML5新特性-- -弹幕需要数据--msg
(1)每一个弹幕中文字需要位置(x,y)
(2)每一个弹幕中文字(m)
(3)每一个弹幕中文字颜色(color)
(4)每一个弹幕中文字大小(font)
(5)每一个弹幕中文字速度(spd)
(6)每一个弹幕中文字(状态 alive true 显示 false 隐藏)
(7)100个弹幕
6.3 HTML5新特性-- -程序调用流程
-msg.js 所有与弹幕相关数据函数
#节省内存(原型)
(1)创建弹幕构造函数 var msgObj = function(){}
x,y,m,color,font,spd..
(2)创建弹幕初始化函数 msgObj.prototype.init = function(){}
给x,y,m,color,font,spd 赋初始值(开始之前值)
(3)创建弹幕绘制函数 msgObj.prototype.draw = function(){}
依据上面x,y,..把弹幕绘制画布上
-main.js 负责创建弹幕对象并且调用相关函数
function game(){
init();
gameloop();
}
function init(){
负责创建弹幕对象并且调用init方法
msg = new msgObj();
msg.init();
}
function gameloop(){
创建定时器调用gameloop
msg.draw();
}
document.body.onload = game;
-index.html
HTML新特性--canvas绘图-文本的更多相关文章
- H5新特性-canvas绘图--渐变对象路径(最复杂)--图片--变形操作
今天的目标 3.1:canvas绘图--(重点掌握:渐变对象.路径.图片.变形) 3.2:canvas绘图--渐变对象 线性渐变: linearGradient 径向渐变: var g = ctx.c ...
- H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图
今天学习的内容 3.1:h5新特性---第三方绘图工具库 echarts(canvas) 百度 echarts;d3;two.js;.... 3.2:h5新特性---SVG绘图 3.2:h5新特性-- ...
- html5新特性canvas绘制图像
在前端页面开发过程中偶尔会有需要对数据进行相应的数学模型展示,或者地理位置的动态展示,可能就会想到用canvas,网上有很多已经集成好的,比如说类似echarts,确实功能非常强大,而且用到了canv ...
- ES6新特性--多行文本
由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用` ... `表示: `这是一个 多行 字符串`;
- H5新特性-视频,音频-Flash-canvas绘图
json格式 json - > AJAX json:数据格式,通常是以字符串形式表示 对象 {"name":"james","age" ...
- Java7 新特性 数值文本表示法
今天和大家分享下 java7中新特性-数值文本表示法 首先,在原来jdk1.6中 如果需要将一个二进制的数值转换成十进制的话,一般情况下都会以下面的代码方式去实现. public static voi ...
- HTML5 十大新特性(五)——SVG绘图
相对于canvas绘图,SVG是一种绘制矢量图的技术.全称叫做Scalable Vector Graphics,可缩放的矢量图,在2000年就已经存在,H5把它纳入了标准标签库,并进行了一些瘦身.需要 ...
- H5新特性---SVG--椭圆--直线--文本--滤镜(高斯滤镜--模糊)--地理定位
今天的目标 3.1:h5新特性--SVG--椭圆 <ellipse rx="" ry="" cx="" cy="" ...
- H5新特性之canvas
canvas无疑是H5之中最受欢迎的新特性了,它可以让浏览毫无费力的画出各种图案,动画. canvas的性能不会因为画布上的图案多少而改变,因此做动画用canvas性能也相当优秀. canvas最基本 ...
随机推荐
- java list随机截取(洗牌)
public void solution(){ List<Integer> givenList = Arrays.asList(1, 2, 3,4,5,6); Collections.sh ...
- Asp.Net Core 3.1学习-依赖注入、服务生命周期(6)
1.前言 面向对象设计(OOD)里有一个重要的思想就是依赖倒置原则(DIP),并由该原则牵引出依赖注入(DI).控制反转(IOC)及其容器等概念.在学习Core依赖注入.服务生命周期之前,下面让我们先 ...
- zabbix自动监控钉钉报警
钉钉报警 一:设置钉钉机器人 二:zabbix服务器server端配置 1.修改zabbix_server.conf文件 [root@server ~]# vim /usr/local/zabbix ...
- HDU 5725 Game
1. 笔记 题意是求距离的期望(距离仍指连接两点且有效的路径长度的最小值).直观想象可以发现,该距离与曼哈顿距离相比最多多2(可以构造这样的路径). 答案=(任意两点曼哈顿距离的总和 - 至少有一点是 ...
- Mina Basics 02-基础
基础 在第1章中,我们简要介绍了Apache MINA.在本章中,我们将了解客户端/服务器体系结构以及有关基于MINA的服务器和客户端的详细信息. 我们还将基于TCP和UDP公开一些非常简单的服务器和 ...
- 以内存级速度实现存储?XPoint正是我们的计划
随着计算能力虚拟化技术的普及,存储机制在速度上远逊于内存这一劣势开始变得愈发凸显. 这一巨大的访问速度鸿沟一直是各项存储技术想要解决的核心难题:纸带.磁带.磁盘驱动器乃至闪存记忆体等等,而如今最新一代 ...
- linux-网络管理(常用命令)
网络查看 ifconfig : 查看与临时配置网络 ifdown 网卡设备名 : 关闭网卡 ifup 网卡设备名 : 启用网卡 netstat 网络状态查询 -t 列出TCP协议端口 -u 列出UDP ...
- Linux shell基础(五)sed命令
一.sed命令 sed是一种强大的流式编辑器 (stream editor for filtering and transforming text),它能够完美的使用正则表达式,逐行处理文本并把结果显 ...
- 在sun jdk 8镜像基础上构建maven 3的docker镜像
2019独角兽企业重金招聘Python工程师标准>>> 在https://my.oschina.net/ytqvip/blog/1595054文章的sun jdk 8镜像基础上构建m ...
- #Week8 Advice for applying ML & ML System Design
一.Evaluating a Learning Algorithm 训练后测试时如果发现模型表现很差,可以有很多种方法去更改: 用更多的训练样本: 减少/增加特征数目: 尝试多项式特征: 增大/减小正 ...