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.占位 ...
随机推荐
- 2018-2019-2 网络对抗技术 20165304 Exp1 PC平台逆向破解(BOF实验)
1.实践目的 本次实践的对象是一个名为pwn1的linux可执行文件. 三个实践内容如下: 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的Bof漏洞,构造一个 ...
- 查看log日志
本地环境的的log日志 可以直接查看, 对于新手来说怎么查看正式环境下的log日志呢 1, SSH到服务器 2,cd 到logs所在目录 3, tail -f 对应日志名字
- Office免费激活方法!亲测有效!2019年4月3日测试
内容转载自:https://blog.csdn.net/qq_41785863/article/details/83619401 防止原博主删除,我先放上自己下载好了的工具分享链接. 链接:https ...
- rem_750
/* fix the code flash the page */ var globalWidth = document.documentElement.clientWidth;//window.in ...
- jQuery之位置坐标图形相关方法
jQuery实例方法-位置图形 位置坐标图形大小相关方法: .offset() .position() .scrollTop() ..scrollLeft() .width()..height() . ...
- C语言典型编程3
关于C的一些小而精的编程,适合希望提升编程能力的初学者学习:关键编程也就几句,但思维可以迁移到其他编程语言.同一问题,算法多种. //判断三角形类型#include<stdio.h>mai ...
- 区块链入门(5)Truffle 项目实战,Solidity IDE, 智能合约部署
在上一张我们学习了Truffle项目的创建,部署等相关内容,今天我们就来实战一下. 今天我们要做3件事: 1) 学习搭建一个Solidity IDE(Remix). 2) 使用这个Solidity I ...
- pyautogui 文档(五):截图及定位功能
截图函数 PyAutoGUI可以截取屏幕截图,将其保存到文件中,并在屏幕中查找图像.如果您有一个小图像,例如需要单击并希望在屏幕上找到它的按钮,这将非常有用.这些功能由PyScreeze模块提供,该模 ...
- 20165315 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解
20165315 2018-2019-2 <网络对抗技术>Exp1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调 ...
- Python数据库连接池DBUtils
Python数据库连接池DBUtils DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不 ...