HTML5 Canvas知识点学习笔记
版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/huangyibin628/article/details/30108165
canvas
|
① 主要作用:绘制矢量图
② 矢量图图形(路径)-(ILL) 位图图像(像素点)- PS中图像都是位图
③ Canvas 可以制作动画,可是不是为了制作动画而生的也可以制作游戏。主要为了画图而生。
④ 可以设置宽高 推荐样式写在style。Canvas 相当于是一个绘制图形的容器,并没有绘制功能,须要借助JS(脚本)实现绘制功能。
|
|
getContext( )
var context = cnvas.getContext('2d');
// 图像的绘制
// 開始 beginPath()開始路径 // 起点 // 过程路径 // 终点 // 落笔 // 结束 closePath()结束路径 |
|
beginPath() 開始路径
moveTo(x,y) 把路径移到画布中指定点 不创建路径
lineTo(x,y) 加入一个新点
closePath() 结束路径
fillStyle 用来设置填充颜色
stroke 绘制异地内衣好的路径
fill() 填充已定义好的路径
|
|
context.lineWidth = 5;
主要书写顺序 先颜色再填充
|
| <script> var cnvas = document.getElementById('cnvas'); var context = cnvas.getContext('2d'); context.moveTo(200,100); context.lineTo(600,100); context.lineTo(600,300); context.lineTo(200,300); context.lineTo(200,100); context.closePath(); context.fillStyle = 'red'; context.stroke(); // 描边 context.fill(); // 填充颜色 </script> |
| var cnvas = document.getElementById('cnvas'); var context = cnvas.getContext('2d'); for (var i = 0; i < 5; i++) { context.beginPath(); context.strokeStyle = 'red'; // context.arc(10*Math.pow(2,i),100,10*Math.pow(2,i),0,Math.PI*2,true); context.arc(10*i,100,10*i,0,Math.PI*2,true); context.stroke(); context.closePath(); }; for (var i = 0; i < 5; i++) { context.beginPath(); context.strokeStyle = 'yellow'; context.arc(10*Math.pow(2,i),300,10*Math.pow(2,i),0,Math.PI*2,true); // context.arc(10*i,100,10*i,0,Math.PI*2,true); context.stroke(); context.closePath(); }; |
var c=document.getElementById("myCanvas");
|
|
产生随机贝塞尔曲线
<script>
var cnvas = document.getElementById('cnvas'); var context = cnvas.getContext('2d'); context.fillStyle = 'rgba(0,0,0,1)'; context.fillRect(0,0,800,400); // 三个控制点 每个点都须要两个值 这两个点随机 // 每条线 都须要颜色(rgba) 三个颜色随机 // setInterval(fun,1000); // bezierCurveTo // Math.round() Math.random() // setInterval(draw,1000); function draw () { var kx1 = Math.round(Math.random()*700); var ky1 = Math.round(Math.random()*350); var kx2 = Math.round(Math.random()*750); var ky2 = Math.round(Math.random()*400); var ex = Math.round(Math.random()*750); var ey = Math.round(Math.random()*400); var colorR = Math.round(Math.random()*255); var colorG = Math.round(Math.random()*255); var colorB = Math.round(Math.random()*255); context.shadowOffsetX = 4; // 阴影Y轴偏移 context.shadowOffsetY = 5; // 阴影X轴偏移 context.shadowBlur = 6; // 模糊尺寸 context.shadowColor = "rgba("+colorG+", "+colorB+", "+colorR+", 0.4)"; // 颜色 context.fillStyle = 'rgba(0,0,0,1)'; context.fillRect(0,0,800,400); context.beginPath(); context.fillStyle = 'rgba(0,0,0,0.1)'; context.fillRect(0,0,800,400); context.bezierCurveTo(kx1,ky1,kx2,ky2,ex,ey); context.lineWidth = 4; context.strokeStyle = "rgb("+colorR+","+colorG+","+colorB+")"; context.stroke(); context.closePath(); } </script> |
|
fillText(text。x,y,maxWidth):text表示文字,x,y为坐标,maxWidth可选,为文字最大宽度,防止文字溢出。填充文字
strokeText(text,x,y,maxWidth):text表示文字,x,y为坐标,maxWidth可选,为文字最大宽度,防止文字溢出,绘制文字
|
|
save() restore()
① 绘制复杂图形不可缺少的方法,分别用来保存、恢复canvas的状态,无參数
② sava用于保存canvas状态,save之后,可以调用canvas的平移,缩放,旋转,裁切之类的操作
③ restore用于恢复canvas之前的保存状态,防止save后的操作对兴许绘制造成影响
④ sava和restore配对使用,restore的次数小于等于save
|
|
shadowColor:设置阴影颜色 shadowBlur:设置阴影模糊级别 shadowOffsetX:设置阴影在x轴上距离图形的距离 shadowOffsetY:设置阴影在y轴上距离图形的距离 |
| 【1】 HTML结构: <div class="wrap" id="wrap"> <canvas id='cavas' width=800 height=400></canvas> <img src="1.png" alt="" id="img"> </div> JS结构 context.beginPath(); <script type="text/javascript"> |
|
context.createPattern(image,"repeat|repeat-x|repeat-y|no-repeat");
img:图片 type: repeat整个画布平铺 repeat-x在x轴方向上平铺 repeat-y在y轴方向上平铺 no-repeat不平铺
-------------------------------
var imageObj = new Image();
imageObj.src = "1.png"; var pattern = context.createPattern(imageObj, "repeat"); |
|
drawImage() 方法在画布上绘制图像、画布或视频。 drawImage() 方法也可以绘制图像的某些部分,以及/或者添加或降低图像的尺寸。 JavaScript 语法 1在画布上定位图像: context.drawImage(img,x,y); JavaScript 语法 2在画布上定位图像,并规定图像的宽度和高度: context.drawImage(img,x,y,width,height); JavaScript 语法 3剪切图像,并在画布上定位被剪切的部分: context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height); |
| <script> var v=document.getElementById("video1"); var c=document.getElementById("myCanvas"); ctx=c.getContext('2d'); v.addEventListener('play', function() {var i=window.setInterval(function() {ctx.drawImage(v,0,0,270,135)},20);},false); |
<script type="text/javascript"> |
HTML5 Canvas知识点学习笔记的更多相关文章
- Java后端高频知识点学习笔记1---Java基础
Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...
- HTML5移动开发学习笔记之Canvas基础
1.第一个Canvas程序 看的是HTML5移动开发即学即用这本书,首先学习Canvas基础,废话不多说,直接看第一个例子. 效果图为: 代码如下: <!DOCTYPE html> < ...
- HTML5 <canvas> 基础学习
HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形 创建一个画布( ...
- 【整理】HTML5游戏开发学习笔记(5)- 猜谜游戏
距上次学习笔记已有一个多月过去了,期间由于新项目赶进度,以致该学习计划给打断,十分惭愧.书本中的第六章的例子相对比较简单.所以很快就完成. 1.预备知识html5中video标签的熟悉 2.实现思路对 ...
- 【整理】HTML5游戏开发学习笔记(1)- 骰子游戏
<HTML5游戏开发>,该书出版于2011年,似乎有些老,可对于我这样没有开发过游戏的人来说,却比较有吸引力,选择自己感兴趣的方向来学习html5,css3,相信会事半功倍.不过值得注意的 ...
- HTML5移动开发学习笔记之CSS3基础学习
CSS回顾 在学CSS3之前首先巩固下CSS的基础知识. 1.CSS框模型 举例子: #box { width: 70px; margin: 10px; padding: 5px; } 这个代码将出现 ...
- html5和css3学习笔记
HTML5针对移动端,移动端的浏览器主要是chrome,是webkit内核; app(applicatin):应用; native app:原生的app sadsadsadad 单标签可以省略结尾标记 ...
- 【html5】html学习笔记1
html5语法规则 1.标签要小写 2.省略标签 如 <tr> <td> <tr><td> 3.属性不加” 如 <div id=div1> ...
- 【整理】HTML5游戏开发学习笔记(2)- 弹跳球
1.预备知识(1)在画布上绘制外部图片资源(2)梯度(gradient):HTML5中的对象类型,包括线性梯度和径向梯度.如createLinearGradient,绘制梯度需要颜色组http://w ...
随机推荐
- Vue篇1
2019 Vue 面试题汇总(持续更新中...) 1. vue中的MVVM模式 即Model-View-ViewModel. Vue是以数据为驱动的,Vue自身将DOM和数据进行绑定,一旦创建绑定,D ...
- MySQL锁机制浅析
MySQL使用了3种锁机制 行级锁,开销大,加锁慢,会出现死锁,发生锁冲突的概率最高,并发度也最高 表级锁,开销小,加锁快,不会出现死锁,发生锁冲突的概率最低,并发度最低 页级锁,开销和加锁时间界于表 ...
- teb教程8
融合动态障碍物 简介:考虑怎样把其他节点发布的动态障碍物考虑进来 1.本部分演示了动态障碍物该如何被包含到teb_local_planner中. 2.写一个简单的动态障碍物的发布器publish_dy ...
- 企业级NginxWeb服务优化实战(上)
企业级NginxWeb服务优化实战(上) 1. Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题 ...
- eclipse配置spring4.0环境详细教程
最近几天学习spring框架,在环境搭建过程中遇到了不少问题,网上找了不少资料都不是特别好,所以自己重新记录一下. 准备: 1.Eclipse下载,进官网,这里直接给链接了https://www.ec ...
- 循环神经网络(Recurrent Neural Network)
传统的神经网络模型,隐藏层的节点之间是无连接的,如下图所示. 而循环神经网络隐藏层的节点之间有连接,主要用于对序列数据进行分类.预测等处理.有连接意味着需要接受信息,这种网络通常用来对序列数据进行处理 ...
- 重新开始学习C++
从2002年,大二的那个夏天开始,就接触了C++这门语言,大学那会就是在老师不停教育下,背诵C++的各种特征,完全不知道C++干嘛用的,当然自然也是不知道汇编语言,C语言是干嘛用的,老师让学就学吧.那 ...
- sql 聚合查询
如果我们要统计一张表的数据量,例如,想查询students表一共有多少条记录,难道必须用SELECT * FROM students查出来然后再数一数有多少行吗? 这个方法当然可以,但是比较弱智.对于 ...
- Shiro学习(15)单点登录
Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录.此处我们使用Ja ...
- Tyvj 1518 CPU监控(线段树)
题目描述: Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看视频之外,还会做出去玩玩和用 ...