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 方法(大楼主管)
六、HTML5新特性-- -变形 (弹幕)-index.html
(1)视频元素:video #底层 z-index:0
(2)画布元素: canvas #上层 z-index:1
(3)创建输入区域
[输入文字区域;文字大小下拉列表;文字颜色下拉列表;发送按钮]
(4)加载main.js 文件(主管)
(5)加载msg.js 文件(一家餐厅)