周二早上html5 canvas入门_第1页
周二早上html5 canvas入门_第2页
周二早上html5 canvas入门_第3页
周二早上html5 canvas入门_第4页
周二早上html5 canvas入门_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HTML5

Canvas

入门什么是HTML?HTML

指的是超文本标记语言:HyperText

MarkupLanguageHTML不是一种编程语言,而是一种标记语言标记语言是一套标记标签(markup

tag)HTML使用标记标签来描述网页HTML文档包含了HTML

标签及文本内容HTML文档也叫做web

页面HTML

标记标签通常被称为HTML标签(HTMLtag)HTML

标签是由尖括号包围的关键词,比如<html>HTML

标签通常是成对出现的,比如<b>和</b>标签对中的第一个标签是开始标签,第二个标签是结束标签开始和结束标签也被称为开放标签和闭合标签HTML5有什么不同?HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定HTML5中的一些有趣的新特性:用于绘画的canvas

元素用于媒介回放的video

和audio

元素对本地离线存储的更好的支持新的特殊内容元素,比如article、footer、header、nav、section新的表单控件,比如calendar、date、time、email、url、search与CSS,JS是什么样的关系?CSS

指层叠样式表(Cascading

Style

Sheets)样式定义如何显示HTML

元素样式通常存储在样式表中把样式添加到HTML

4.0

中,是为了解决内容与表现分离的问题JavaScript

是互联网上最流行的脚本语言,这门语言可用于

HTML和web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备JavaScript

是一种轻量级的编程语言。JavaScript

是可插入HTML

页面的编程代码。HTML5

Canvas介绍HTML5<canvas>元素用于图形的绘制,通过脚本(通常是

JavaScript)来完成.<canvas>

标签只是图形容器,必须使用脚本来绘制图形基于状态进行绘制可以通过多种方法使用Canva绘制路径,圆、字符以及添加图像Canvas的默认大小是300*150基本知识context是一个封装了很多绘图功能的对象,获取这个对象的方法是var

context

=canvas.getContext("2d");canvas元素绘制图像的时候有两种方法,分别是context.fill()//填充

context.stroke()//绘制边框style:在进行图形绘制前,要设置好绘图的样式

context.fillStyle//填充的样式

context.strokeStyle//边框样式

context.lineWidth//图形边框宽度颜色的表示方式:直接用颜色名称:"red""green"

"blue"十六进制颜色值:"#EEEEFF"rgb(1-255,1-255,1-255)rgba(1-255,1-255,1-255,透明度)绘制矩形context.fillRect(x,y,width,height)context.

strokeRect(x,y,width,height)x:矩形起点横坐标y:矩形起点纵坐标

width:矩形长度

height:矩形高度清除矩形区域context.clearRect(x,y,width,height)x:清除矩形起点横坐标

y:清除矩形起点纵坐标

width:清除矩形长度

height:清除矩形高度绘制线段路径context.beginPath()

context.closePath()绘制路径使用时的注意点:1.系统默认在绘制第一个路径的开始点为beginPath*2、如果画完前面的路径没有重新指定beginPath,那么画其他路径的时候会将前面最近指定的beginPath后的全部路径重新绘制每次调用context.fill()的时候会自动把当次绘制的路径的开始点和结束点相连,接着填充封闭的部分在每个Canvas

实例对象中都拥有一个path

对象,创建自定义图形的过程就是不断对path对象操作的过程。每当开始一次新的图形绘制任务,都需要先使用beginPath()方法来重置path

对象至初始状态,中间是一系列画线方法的调用,最后是最后一步,也是可选的步骤,是调用

closePath()方法将自定义图形进行闭合,该方法将自动创建一条从当前坐标到起始坐标的直线。绘制线段context.moveTo(x,y)context.lineTo(x,y)x:x坐标y:y坐标每次画线都从moveTo的点到lineTo的点如果没有moveTo那么第一次lineTo的效果和moveTo一样,每次lineTo后如果没有moveTo,那么下次lineTo的开始点为前一次lineTo的结束点绘制圆形context.arc(x,

y,

radius,

startAngle,endAngle,

anticlockwise)x:圆心的x坐标

y:圆心的y坐标radius:圆的半径

startAngle:开始角度

endAngle:结束角度anticlockwise:是否逆时针(true)为逆时针,(false)为顺时针Math.PI是半圆Math.PI*2是整个圆0.5为四分之一变形图形平移context.translate(x,y)x:坐标原点向x轴方向平移xy:坐标原点向y轴方向平移y缩放context.scale(x,y)x:x坐标轴按x比例缩放

y:y坐标轴按y比例缩放旋转context.rotate(angle)angle:坐标轴旋转x角度(角度变化模型和画圆的模型一样)矩阵变换context.transform(m11,m12,m21,m22,dx,dy)所谓的矩阵变换其实是context内实现平移,缩放,旋转的一种机制主要原理就是矩阵相乘context.translate(x,y)

等同于context.transform

(1,0,0,1,x,y)或context.transform(0,1,1,0.x,y)context.scale(x,y)等同于context.transform(x,0,0,y,0,0)或context.transform

(0,y,x,0,

0,0);context.rotate(θ)等同于context.transform(Math.cos(θ*Math.PI/180),Math.sin(θ*Math.PI/180),-Math.sin(θ*Math.PI/180),Math.cos(θ*Math.PI/180),0,0)或context.transform(-Math.sin(θ*Math.PI/180),Math.cos(θ*Math.PI/180),Math.cos(θ*Math.PI/180),Math.sin(θ*Math.PI/180),0,0)矩阵变换context.setTransform(m11,m12,m21,m22,dx,dy)setTransform方法的参数及参数的用法与transform相同,该方法的作用是为将画布上的最左上角重置为坐标原点。绘制贝塞尔曲线context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)cp1x:第一个控制点x坐标

cp1y:第一个控制点y坐标

cp2x:第二个控制点x坐标

cp2y:第二个控制点y坐标

x:终点x坐标y:终点y坐标绘制二次样条曲线context.quadraticCurveTo(qcpx,qcpy,qx,qy)qcpx:二次样条曲线控制点x坐标

qcpy:二次样条曲线控制点y坐标

qx:二次样条曲线终点x坐标qy:二次样条曲线终点y坐标渐变线性渐变var

lg=

context.createLinearGradient(xStart,yStart,xEnd,yEnd)线性渐变颜色lg.addColorStop(offset,color)xstart:渐变开始点x坐标ystart:渐变开始点y坐标

xEnd:渐变结束点x坐标

yEnd:渐变结束点y坐标offset:设定的颜色离渐变结束点的偏移量(0~1)color:绘制时要使用的颜色径向渐变(发散)var

rg=context.createRadialGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd)径向渐变(发散)颜色rg.addColorStop(offset,color)xStart:发散开始圆心x坐标

yStart:发散开始圆心y坐标

radiusStart:发散开始圆的半径

xEnd:发散结束圆心的x坐标

yEnd:发散结束圆心的y坐标

radiusEnd:发散结束圆的半径offset:设定的颜色离渐变结束点的偏移量(0~1)color:绘制时要使用的颜色图形组合控制图像组合形式的属性为:globalCompositeOperation图形组合就是两个图形相互叠加了图形的表现形式,是后画的覆盖掉先画的呢,还是相互重叠的部分不显示等等,至于怎么显示就取决于type的值了,绘制文字填充文字:context.fillText(text,x,y,[maxWidth])绘制文字轮廓context.strokeText(text,x,y

,[maxWidth])text:要绘制的文字x:文字起点的x坐标轴

y:文字起点的y坐标轴maxWidth为可选参数,表示显示文字时的最大宽度context.font:设置字体样式[font

style][font

weight][font

size][font

face]””context.textAlign:水平对齐方式,属性值可以为start、end、left、right、centercontext.textBaseline:垂直对齐方式,属性值可以为top、hanging、middle、alphabetic、ideographic、bottomvar

length=context.measureText(text).width

测量文本的长度阴影给画布上的形状添加阴影,四个参数设置:context.shadowOffsetX:阴影的横向位移量(默认值为0)context.shadowOffsetY:阴影的纵向位移量(默认值为0)context.shadowColor:阴影的颜色context.shadowBlur:阴影的模糊范围(值越大越模糊)图像应用绘图:context.drawImage图像平铺:context.createPattern(image,type)图像裁剪:context.clip()像素处理:varimagedata=context.getImageData(sx,sy,sw,sh)绘图context.drawImagecontext.drawImage(image,x,y)image:Image对象var

img=newImage();

img.src="url(...)";x:绘制图像的x坐标y:绘制图像的y坐标context.drawImage(image,x,y,w,h)image:Image对象var

img=newImage();

img.src="url(...)";x:绘制图像的x坐标y:绘制图像的y坐标

w:绘制图像的宽度

h:绘制图像的高度context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh):选取图像的一部分矩形区域进行绘制

image:Image对象var

img=newImage();

img.src="url(...)";sx:图像上的x坐标sy:图像上的y坐标

sw:矩形区域的宽度

sh:矩形区域的高度

dx:画在canvas的x坐标

dy:画在canvas的y坐标

dw:画出来的宽度

dh:画出来的高度图像平铺context.createPattern(image,type)type:no-repeat:不平铺

repeat-x:横方向平铺

repeat-y:纵方向平铺

repeat:全方向平铺像素处理:获取像素颜色数组:var

imagedata=context.getImageData(sx,sy,sw,sh)sx:cavas的x轴坐标点sy:canvas的y轴坐标点

sw:距离x的宽度sh:距离y的高度ImageData变量是一个CanvasPixelArray对象,height、width、data等属性。data属性是一个像素颜色数组,顺序是所取像素范围的从左到右,从上到下,数组的元素是(所有图形,包括图片,和绘制的图形)每个像素的rgba[r1,g1,b1,a1,r2,g2,b2,a2...]设置像素颜色:context.putImageData(imagedata,dx,dy,dirtyX,dirtyY,dirtyWidth,dirtyHeight)对imagedata数组中的各个像素的r、g、b、a值进行修改,再调用putImageData方法进行绘制

imagedata:修改后的imagedatadx:重绘图像的起点横坐标(重绘的起点和原来的图像一致的话就会把原来的图形覆盖掉,看起来就像是原来的图像变成现在的图像一样)dy:重绘图像的起点纵坐标//以下可选参数,设置重绘的矩形范围,如果缺省,默认会重绘所有的imegedatadirtyX:矩形左上角x轴坐标dirtyY:矩形左上角y轴坐标

dirtyWidth:矩形长度dirtyHeight:矩形高度保存和恢复状态保存:context.save()

恢复:context.restore()context.save():调用该方法,会保存当前context的状态、属性(可理解成游戏存档)context.restore():调用该方法就能恢复到save时候context的状态、属性(游戏回档)简单动画setInterval:setInterval(表达式,交互时间)它从载入后,每隔指定的时间就执行一次表达式setTimeout:setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论