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.占位 ...
随机推荐
- K8s存储卷、pv和pvc的使用
emptyDIR 临时目录 hostPath :使用主机的路径 网络存储: 传统的设备存储:NAS,SAN 分布式存储:glusterfs,rbd,cephfs 云存储:EBS,Azure,阿里云的 ...
- entityVo对象与entity对象
java Web项目Service层通用接口和entityVo对象与entity对象转化问题的解决方案 原创 2015年12月17日 15:42:09 标签: java / Service / 通用工 ...
- 移动端响应式布局--你不知道的CSS3.0媒体查询,解决rem部分情况下无法适配的场景
媒体查询作为响应式布局的方法之一,实际项目中用途也很广.但是你真的知道怎么用吗? 例如,下面匹配 iphone6/7/8 屏幕 @media screen and (max-width: 375px) ...
- C++读取与保持图片
#include<iostream> using namespace std; void main(void) { //保存输入图像文件名和输出图像文件名 ]; ]; //图像数据长度 i ...
- 为sqlserver数据库添加专用用户名
在安全里面右键添加登录名,输入登录名与密码(可以取消强制密码策略)然后选择用户映射的数据库,勾选db_owner即可.
- 使用FFmpeg解码并用swscale将YUV转为RGB
#include <stdio.h> #include <libavcodec/avcodec.h> #include <libavformat/avformat.h&g ...
- ubuntu16.04安装Navicate
1. http://download2.navicat.com/download/navicat100_mysql_en.tar.gz 2. tar -zxvf /home/rain/dow ...
- Solidity-让合约地址 接受ETH的转账充值的 三种方式
以太坊智能合约开发:让合约接受转账 在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢? 有三种方式: 部署合约时转账 调用合约提供的方法 直接向合约地址进 ...
- 将Windows系统移到另一个硬盘
原先的128GB SSD,给Windows用是够了,最近虚拟机用得多,靠以前的SSD外挂着用,实在有点不爽,就入手一个256GB的,重装系统是个令人头疼的事情,当然不能干.想起来以前另一个机器操作的时 ...
- C#使用CefSharp开源库开发Chrome 浏览器
一.介绍 这个东西我以前没有接触过,但是公司项目里面有用到这个东西,所以就顺便研究一下.今天只是做了 WinForm 的测试,有时间了在试试 WPF 是如何实现的.刚开始一塌糊涂,有点麻 ...