一、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绘图-文本的更多相关文章

  1. H5新特性-canvas绘图--渐变对象路径(最复杂)--图片--变形操作

    今天的目标 3.1:canvas绘图--(重点掌握:渐变对象.路径.图片.变形) 3.2:canvas绘图--渐变对象 线性渐变: linearGradient 径向渐变: var g = ctx.c ...

  2. H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图

    今天学习的内容 3.1:h5新特性---第三方绘图工具库 echarts(canvas) 百度 echarts;d3;two.js;.... 3.2:h5新特性---SVG绘图 3.2:h5新特性-- ...

  3. html5新特性canvas绘制图像

    在前端页面开发过程中偶尔会有需要对数据进行相应的数学模型展示,或者地理位置的动态展示,可能就会想到用canvas,网上有很多已经集成好的,比如说类似echarts,确实功能非常强大,而且用到了canv ...

  4. ES6新特性--多行文本

    由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用` ... `表示: `这是一个 多行 字符串`;

  5. H5新特性-视频,音频-Flash-canvas绘图

    json格式 json - > AJAX json:数据格式,通常是以字符串形式表示 对象 {"name":"james","age" ...

  6. Java7 新特性 数值文本表示法

    今天和大家分享下 java7中新特性-数值文本表示法 首先,在原来jdk1.6中 如果需要将一个二进制的数值转换成十进制的话,一般情况下都会以下面的代码方式去实现. public static voi ...

  7. HTML5 十大新特性(五)——SVG绘图

    相对于canvas绘图,SVG是一种绘制矢量图的技术.全称叫做Scalable Vector Graphics,可缩放的矢量图,在2000年就已经存在,H5把它纳入了标准标签库,并进行了一些瘦身.需要 ...

  8. H5新特性---SVG--椭圆--直线--文本--滤镜(高斯滤镜--模糊)--地理定位

    今天的目标 3.1:h5新特性--SVG--椭圆 <ellipse rx="" ry=""  cx="" cy="" ...

  9. H5新特性之canvas

    canvas无疑是H5之中最受欢迎的新特性了,它可以让浏览毫无费力的画出各种图案,动画. canvas的性能不会因为画布上的图案多少而改变,因此做动画用canvas性能也相当优秀. canvas最基本 ...

随机推荐

  1. JVM原理以及深度调优(二)

    JVM内存分配 内存分配其实真正来讲是有三种的.但对于JVM来说只有两种 栈内存分配: 大家在调优的过程中会发现有个参数是-Xss 默认是1m,这个内存是栈内存分配, 在工作中会发现栈OutOfMem ...

  2. jax-rs下载文件

    @Path("/file") public class FileService { private static final String FILE_PATH = "c: ...

  3. C++条件分支结构

    一.对于近期学习知识点的摘要: 1. 从第一个.cpp文件谈起, #include<iostream> //头文件 using namespace std; //使用命名空间,namesp ...

  4. C++编程入门题目--No.4

    题目: 输入某年某月某日,判断这一天是这一年的第几天? 程序分析: 以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天. #incl ...

  5. POJ3614防晒霜 这个贪心有点东西(贪心+优先队列)

    这个题是说有C头牛去晒太阳,带了L瓶防晒霜,每瓶防晒霜都有一个SPF值(每瓶防晒霜都能解决一个最短路 ) 每头牛给出了他可以接受防晒霜的上限,和下限,每种防晒霜都给出了SPF值与数量. 从防晒霜的sp ...

  6. Python(Redis 中 Set/Zset 类型数据和其他操作)

    1.redis 基本操作命令 Set 操作 Set 集合就是不允许重复的列表 无序集合 sadd(name,values) 给 name 对应的集合中添加 1 个或多个元素 import redis ...

  7. Fiddler 介绍

    1.fiddler原理介绍 fiddler 是一个抓包工具,当浏览器访问服务器会形成一个请求,此时,fiddler就处于请求之间,当浏览器发送请求,会先经过 fiddler,然后在到服务器:当服务器有 ...

  8. 解决ASP.NET WebPage的CS1061报错

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="pg_CompanyInfo ...

  9. awk调用外部程序

    程序的功能很简单: 调用外部解密程序decoder,将文件第二列字段解密,然后写入新文件中. BEGIN { OFS = "\t" } { outputFileName = &qu ...

  10. C - A Plug for UNIX POJ - 1087 网络流

    You are in charge of setting up the press room for the inaugural meeting of the United Nations Inter ...