H5新特性-canvas绘图--渐变对象路径(最复杂)--图片--变形操作
今天的目标
3.1:canvas绘图--(重点掌握:渐变对象.路径.图片.变形)
3.2:canvas绘图--渐变对象
线性渐变: linearGradient
径向渐变:
var g = ctx.createLinearGradient(x1,y1,x2,y2);
g.addStopColor(offset,color);
..
ctx.fillStyle = g;
ctx.strokeStyle = g;
3.3:canvas绘图--路径(最复杂)
Path:由多个坐标点组成任意形状,路径不见,可用于
"描边","填充","裁剪"...
ctx.beginPath(); 开始一条新路径
ctx.closePath(); 闭合当前路径
ctx.moveTo(x,y); 移动指定点
ctx.lineTo(x,y); 从当前点到指定点画直线
ctx.arc(cx,cy,r,start,end); 绘制圆拱形
cx cy 圆心
r 半径
start 开始角度 (弧度0~2*PI)
end 结束角度 角度*Math.PI/180==弧度
ctx.stroke(); 描边
ctx.fill(); 填充
练习:使用描边绘制一个坐标轴
练习:使用圆拱形绘制可以前进的圆环进度条
练习:创建一个函数openMouth()/closeMouth();
创建定义时器,每隔1s交替调用
openMouth()/closeMouth();
3.4: canvas绘图--图片
canvas属于客户端技术,图片在服务器中,所以浏览器必须先下载要绘制的图片,且等待图片异步加载完成.
var p3 = new Image(); 创建图片对象
p3.src = "x.jpg"; 下载指定图片
p3.onload = function(){ 图片下载完成触发事件
console.log(p3.width);
ctx.drawImage(p3,x,y); 原始大小绘图
ctx.drawImage(p3,x,y,w,h); 拉伸绘图
}
练习:在画布四个角各画一架飞机
练习:在画布左上角画一个左右移动飞机
canvas绘图核心知识点--重占
绘制矩形:
ctx.fillRect();ctx.strokeRect();ctx.clearRect();
绘制文本
ctx.fillText();ctx.strokeText();ctx.measureText().width
绘制路径
ctx.beginPath();ctx.closePath();
ctx.moveTo();ctx.lineTo();
ctx.arc();ctx.stroke();ctx.fill()
绘制图像
ctx.drawImage();
3.4: canvas绘图--变形操作
canvas绘图可以针对于某一个图像/图形,的绘制过程
进行变形 rotate,translate
ctx.rotate(弧度); 旋转画笔,轴点画布的原点.
ctx.translate(x,y); 平移原点
ctx.save(); 保存画笔状态(存盘)
ctx.restore(); 恢复画笔状态到上一次保存(读取存盘)
练习:在画布左上角画一个绕自己为中心旋转飞机1
练习:在画布右上角画一个绕自己为中心旋转飞机2
飞机2旋转速度是飞机1 2倍svg绘图
练习:使用canvas绘制随机改变验证码图片!
var str = "ABC..abcdefghim...1234567890";
var char = str[字符串长度随机数] 17:45~17:57
要求:
画布背景随机颜色[浅色],ctx.fillRect();
文字内容随机,大小随机,颜色随机(深色),旋转角度随机
5条随机干扰线(深色), 贝赛尔曲线
100个干扰点(半径为1圆)
H5新特性-canvas绘图--渐变对象路径(最复杂)--图片--变形操作的更多相关文章
- H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图
今天学习的内容 3.1:h5新特性---第三方绘图工具库 echarts(canvas) 百度 echarts;d3;two.js;.... 3.2:h5新特性---SVG绘图 3.2:h5新特性-- ...
- HTML新特性--canvas绘图-文本
一.html5新特性--canvas绘图-文本(重点) #常用方法与属性 -ctx.strokeText(str,x,y); 绘制描边文字(空心) str:绘制文本 x,y:字符串左上角位置(以文 ...
- H5新特性-视频,音频-Flash-canvas绘图
json格式 json - > AJAX json:数据格式,通常是以字符串形式表示 对象 {"name":"james","age" ...
- H5新特性汇总
H5新特性: 新增选择器 document.querySelector.document.querySelectorAll 拖拽释放(Drag and drop) API 媒体播放的 video 和 ...
- H5新特性---SVG--椭圆--直线--文本--滤镜(高斯滤镜--模糊)--地理定位
今天的目标 3.1:h5新特性--SVG--椭圆 <ellipse rx="" ry="" cx="" cy="" ...
- H5新特性---Web Worker---Web Stroage
今天的目标 3.1:h5新特性八--Web Worker---代码就3行 程序:program 存储在外存(磁盘)中代码 进程:Process/Task 将程序调用内存中,分配空间 线程:Thread ...
- H5新特性--WebStorage--WebSocke
今天的目标 3.2:h5新特性--WebStorage localStorage 在客户端浏览器保存数据 永久保存 保存数据 localStorage [key] = value 保存数据 loca ...
- H5新特性实现对class的增删改
直接撸代码 全靠死记硬背 没什么技术点 HTML部分 <!DOCTYPE html> <html lang="en"> <head> <m ...
- Atitti html5 h5 新特性attilax总结
Atitti html5 h5 新特性attilax总结 Attilax觉得不错的新特性 3.语义Header和Footer (The Semantic Header and Footer) 8.占位 ...
随机推荐
- Java好的的工具类:JsonUtils
package com.nxhfzx.gdshopping.utils; import java.util.List; import com.fasterxml.jackson.core.JsonPr ...
- css 之过渡效果
之前写css的效果,都是使用js 来完成的,但是写js比较耗费时间,有时候逻辑不对,还出不来效果,所以也比较烦:所以一些简单的效果,就使用css 来完成会比较好一些,不必耗费太多的精力: 但是写css ...
- 使用TensorFlow训练模型的基本流程【转】
原文地址(https://github.com/wmpscc/TensorflowBaseDemo ) 本篇文章将介绍使用tensorflow的训练模型的基本流程,包括制作读取TFRecord,训练和 ...
- Idea安装lombok插件【转载】
参照:http://www.cnblogs.com/holten/p/5729226.html https://yq.aliyun.com/articles/59972 lombok是一个可以通过简单 ...
- 一个萌新对redis的理解
redis是用来保存一些常用的数据到内存,以加快数据读取,减少直接访问DB流量以降低DB压力.既然是放到内存的,那我们怎么样保证用户使用的时候不会出现与数据的差异呢,其实这叫“如何报证缓存数据的一致性 ...
- phxpaxos遇到反复拉取checkpoint但是反复失败的问题,给其它节点造成压力
原因: 接收checkpoint时与接收普通message共用IOLoop中的队列,当遇到队列满或者超内存时,会造成checkpoint的包随机丢失的问题 解决办法: 遇到checkpoint时不丢弃 ...
- Codeforces Round #436 C. Bus
题意:一辆车在一条路上行驶,给你路的总长度a,油箱的容量b,加油站在距离起点的距离f,以及需要走多少遍这条路k(注意:不是往返) 问你最少加多少次油能走完. Examples Input 6 9 2 ...
- Lua + Redis 解决高并发
一.业务背景 优惠券业务主要提供用户领券和消券的功能:领取优惠券的动作由用户直接发起,由于资源有限,我们必须对用户的领取动作进行一些常规约束. 约束1(优惠券维度): 券的最大数量 max: 约束2( ...
- DataTable序列化
DataTable是复杂对象,无法直接序列化,必须通过其他的方式来实现 下面介绍一下常用的几种方式 1.先转换为List,再序列化List 下面是DataTable转换为List的方法 protect ...
- 转载:让Windows Server 2012r2 IIS8 ASP.NET 支持10万并发请求
由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误. 为了避免这样的错误,我们根据相关文档调整了设置,让服务器从设置上支 ...