H5新特性之canvas
canvas无疑是H5之中最受欢迎的新特性了,它可以让浏览毫无费力的画出各种图案,动画。
canvas的性能不会因为画布上的图案多少而改变,因此做动画用canvas性能也相当优秀。
canvas最基本的概念是1.路径 2.描边 3.填充 4.变换 5.图片操作
首先先获得canvas的操作借口集(这里先用2d为例):
let canvas = document.getElementById('canvas');
// canvas的所有画图接口都集成在gd这里了
let gd = canvas.getContext('2d');
1.路径
常见的路径操作有
//清除之前的路径
gd.beginPath(); //移动点到x,y
gd.moveTo(x,y); //线连到x,y
gd.lineTo(x,y); //矩形“选区”(x,y为左上角的点,w,h分别为宽高)
gd.rect(x,y,w,h); //圆弧“选区”
gd.arc(x,y,r,startArg,endArg,是否逆时针); //闭合路径
gd.closePath();
2.描边
常见的描边操作:
// 先设置好描边的样式
gd.strokeStyle = '任意CSS颜色';
gd.lineWidth = 3; // 边宽3px
// 把上面的路径描一次边
gd.stroke(); //直接描矩形
gd.strokeRect(x,y,w,h); //写字
gd.font = '30px 宋体';
gd.strokeText('内容~~',x,y);
3.填充
常见的填充操作:
//设置填充样式
gd.fillStyle = '任意css样式';
//把上面的路径自动闭合填充
gd.fill(); //直接填充矩形
gd.fillRect(x,y,w,h); //填充字体
gd.font = '30px 宋体';
gd.fillText('内容',x,y);
4.变换
和CSS3的变换一样。canvas的变换也有scale、translate、rotate
gd.translate(x,y) //图形相对原来的位置移动多少 gd.rotate(Math.PI/) //整个画布相对与左上角,逆时针转90° gd.scale(x轴放大倍数,y轴放大倍数); //整个画布左上角为原点,分别放大不同倍数
而变换前后要有save和restore来还原画布的变换状态
gd.save(); //先保存变换前画布状态
//。。。。变换1
//。。。。变换2
//。。。。变换n
gd.restore(); //还原变换后的画布状态
5.图片操作
//填充图片
let img = new Image();
img.src = 'url';
img.onload = function(){
gd.drawImage(
img, //或者是get一个img dom又或者createElement('img')
sx,sy,sw,sh, //原图的定位,大小
dx,dy,dw,dh //在canvas的定位,大小
)
} //操作图片像素 let data = gd.getImageData(x1,y1,x2,y2); //获取从点1到点2之间的所有像素点的值,每个点都有r、g、b、a四个值,例如点1的值为data[0~3] //对data数组一波操作之后,把数据放回画布中
gd.putImageData(data,x1,x2); //把数据从点1这里开始放数据
ps:当然还有一个比较重要的操作
gd.clearRect(0,0,canvas.width,canvas.height); //清除画布 canvas.toDataURL(); //把canvas转化成base64
H5新特性之canvas的更多相关文章
- H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图
今天学习的内容 3.1:h5新特性---第三方绘图工具库 echarts(canvas) 百度 echarts;d3;two.js;.... 3.2:h5新特性---SVG绘图 3.2:h5新特性-- ...
- H5新特性汇总
H5新特性: 新增选择器 document.querySelector.document.querySelectorAll 拖拽释放(Drag and drop) API 媒体播放的 video 和 ...
- H5新特性-视频,音频-Flash-canvas绘图
json格式 json - > AJAX json:数据格式,通常是以字符串形式表示 对象 {"name":"james","age" ...
- H5新特性--WebStorage--WebSocke
今天的目标 3.2:h5新特性--WebStorage localStorage 在客户端浏览器保存数据 永久保存 保存数据 localStorage [key] = value 保存数据 loca ...
- H5新特性---Web Worker---Web Stroage
今天的目标 3.1:h5新特性八--Web Worker---代码就3行 程序:program 存储在外存(磁盘)中代码 进程:Process/Task 将程序调用内存中,分配空间 线程:Thread ...
- H5新特性---SVG--椭圆--直线--文本--滤镜(高斯滤镜--模糊)--地理定位
今天的目标 3.1:h5新特性--SVG--椭圆 <ellipse rx="" ry="" cx="" cy="" ...
- 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.占位 ...
- 使用h5新特性,轻松监听任何App自带返回键
1.前言 如今h5新特性.新标签.新规范等有很多,而且正在不断完善中,各大浏览器商对它们的支持,也是相当给力.作为前端程序员,我觉得我们还是有必要积极关注并勇敢地加以实践.接下来我将和各位分享一个特别 ...
随机推荐
- linux第四次读书笔记
第四章:进程调度 一.多任务 1.非抢占式多任务 进程会一直执行直到自己主动停止运行(这一步骤称为让步) 2.抢占式多任务 Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占.进 ...
- DWR实现服务器向客户端推送消息
原文链接 http://www.blogjava.net/stevenjohn/archive/2012/07/07/382447.html这片文章还是给了我很大帮助,再次表示感谢,下面我将这两天的研 ...
- Ajax写成绩批量录入
1.jsp,ajax的循环调用,必须要递归,否则会出错. <%@ page language="java" import="java.util.*" pa ...
- 作业1+2.四则运算(改进后完整版,用python写的)_064121陶源
概述: 用一个星期加上五一的三天假期自学了python,在Mac系统上重新写出了四则运算的程序,编译器是PyCharm,相当于完成了作业2.d)"选一个你从来没有学过的编程语言,试一试实现基 ...
- iOS开发线程安全问题
先来看一下代码: - (void)viewDidLoad { [super viewDidLoad]; self.testStr = @"String initial complete&qu ...
- [日常工作]Oracle12cr2在日常工作中遇到的不兼容的问题
Oracle12c 数据库GS实例时需要使用新驱动,避免制单出现获取不到正确凭证编号内码的问题. Oracle12c 会产生大量的隐藏表,部分ddl语句会报错. Oracle12c 删除了VM_con ...
- Oracle18c Exadata 版本安装介质安装失败。
下载下来的介质安装失败 白费一早上的功夫.. 一会儿问问云和恩墨的人呢.. INFO: [-- ::] Skipping line: 复制数据库文件 INFO: [-- ::] Skipping li ...
- Linux 重启网络提示找不到eth0(no device found for “System eth0”)
一.背景 使用VMWare创建了一个虚拟机(VM1),然后通过拷贝的方式创建了另一台虚拟机(VM2).在第二台虚拟机上设置网卡为固定IP,使用service network restart重启网络的时 ...
- width() 、 height() 方法;innerWidth() 、innerHeight() 方法;outerWidth() 、 outerHeight() 方法的区别
1.width() . height() 方法 设置或返回元素的宽度.高度(不包括内边距.边框或外边距): 2.innerWidth() .innerHeight() 方法 返回元素的宽度.高度(包括 ...
- Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件
前面的教程中,我们已经可以让小海龟绘制出各种图形了.但是,所有绘图的代码都是预先编好的,程序一旦运行起来,运行结果(绘制的图形)就是固定不变的.这一节中,咪博士将教大家如何让海龟响应用户的输入. im ...