HTML5 canvas

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

跟KingDZ学HTML5之三:画布Canvas跟KingDZ学HTML5之四:继续探究Canvas之路径跟KingDZ学HTML5之五:Canvas之图像与文字跟KingDZ学HTML5之六:Canvas特效-阴影和渐变跟KingDZ学HTML5之七:Canvas移动、旋转、缩放HTML5基础,第4部分:点睛之笔CanvasHTML5基础,第4部分:点睛之笔Canvas发布时间:2012-02-27作者:小想来源:未知我要评论(译者注:由于yeeyan编辑器对文章中的标签做解析的原因,我在每个标签的符号之后都加入了一个空格,比如说,左尖括号+head+右尖括号,我会写成head,以便其能够在文章中正确显示…(译者注:由于yeeyan编辑器对文章中的标签做解析的原因,我在每个标签的符号之后都加入了一个空格,比如说,左尖括号+head+右尖括号,我会写成head,以便其能够在文章中正确显示,不便之处敬请谅解。)使用HTML5来编写代码的人,有着设计者和开发者双重身份的强悍组合,其职责是构造出高效的富互联网应用(richInternetapplication,RIA),特别是丰富的用户界面。就高效这个字眼来说,我的意思是指系统级的和系统性的创造力增强,这种增强以数字化的方式促进了站点所有者、所有者的代理机构和站点用户之间的对话。RIA是用户获得满意体验的来源之处和媒介,因此,它是任何成功的以网络为中心的风险投资的重要组成部分。以网络为中心的活动,就性质来说,或多或少都是协作式的。公司要在包括了市场营销和管理的各个层面都取得成功的话,数字化协作的制胜方法是至关重要的。很多时候的很多情况都取决于效率,网站要依靠效率来满足其访问者的品质期望。正如你已经见到的那样,HTML5是为这一具有跨平台能力、融合了通信、使用统一语言、提供无处不在的计算,以及基于开放系统的协作式“一网化世界(onewebworld)”量身定做的。这一文章系列的前面三部分内容重点关注语义、正确的编码方法、输入在极为重要的转化过程中的作用,以及站点管理最佳做法等,所有这些的目的都是在为以一种有组织和符合逻辑的方式来创建RIA奠定基础。每篇文章中都共有的一个主题是,对于实现网站所有者的机构目标来说,制造并管理丰富的用户体验是至关重要的。什么是Canvas?HTML5Canvas(画布)是一个非常有用的绘图和动画元素,Canvas使用JavaScript来直接在页面上绘制图形。这是一个由你来定义和控制的长方形区域,该区域允许动态、可脚本渲染的2D图形和位图图像。在制作用来增强UI、示意图、相册、图表、图形、动画和嵌入式绘图应用的那些非常棒的视觉材料方面,HTML5堪称完美。Canvas元素有一些用来绘制路径、矩形、圆形和字符的方法。Canvas的坐标在画布上绘图的一个先决条件是要熟悉网格或是坐标空间,宽度和高度的空间区域测量是以像素为单位给出的。画布是基于x和y坐标的使用来构建的,画布的x=0,y=0坐标位于左上角。画布的矩形区域的默认属性是300像素的宽度和150像素的高度,但你可以通过指定宽度和高度来确定画布元素的确切大小。图1中的示意图说明了x和y坐标的实现方式。图1.Canvas的坐标图1给出了一个100像素X100像素的画布区:1.左上角是x=0,y=0。2.x的值水平增加,y的值垂直增加。3.右下角是x=100,y=100。4.中间的点是x=50,y=50。开始第一步要在画布上放置任何东西的话,你首先必须在HTML文件中定义画布。你必须创建访问canvas标签的JavaScript代码,并通过与HTML5CanvasAPI通信来绘制你的图像。canvas标签的基本结构如下:canvasid=myCanvaswidth=200height=200/canvascanvas元素自身有两个属性:width和height,除此之外,canvas还拥有所有主要的HTML5属性,比如说class、id和name等。id属性被用在上面所示的代码中,JavaScript使用这里创建的canvas的id来表示要在上面绘画的画布。JavaScript使用document.getElementById()方法来确定正确的画布,如下面代码所示:varcanvas=document.getElementById(myCanvas);每个画布都必须要有一个context(上下文)的定义,如下面代码所示。就目前的情况来说,官方规范只承认一个2D环境:varcontext=canvas.getContext(2d);在标识画布并指明了它的上下文之后,你就做好了开始绘画的准备了。绘图工具、效果和转换在HTML5Canvas的这一讨论过程中,我们对各种绘图工具、效果和转换都查看一番。绘图工具包括:1.线条2.矩形3.圆弧4.贝塞尔曲线和二次曲线5.圆和半圆你会用到的Canvas效果包括:1.填充和描边2.线性和径向的渐变要讨论的转换包括:1.缩放2.旋转3.平移绘制线段要在画布上绘制线段的话,你可以使用moveTo()、lineTo()和stroke()方法,此外,你要使用beginPath()方法来重置当前路径:1.context.beginPath();2.Context.moveTo(x,y);3.Context.lineTo(x,y);4.Context.stroke(x,y);beginPath()方法开始一条新的路径,在使用不同的子路径绘制一条新的线段之前,你必须要使用beginPath()来标明一个绘制过程要遵循的新起点。在绘制第一条线段时,beginPath()方法的调用不是必须的。moveTo()方法指明新的子路径从哪里开始,lineTo()方法创建子路径。你可以使用lineWidth和strokeStyle来改变线段的外观,lineWidth元素改变线段的粗细,strokeStyle改变颜色。在图2中,三条线段分别用蓝色、绿色和紫色画了出来。图2.画有三条不同颜色的线段的画布图2中的线段由清单1中的代码来创建,蓝色的线段有着圆弧形的端点,该线段是由首个context.beginPath()这一开始新路径的建立的方法来创建的,其后紧跟着:1.context.moveTo(50,50),该方法把线路的起点置于(x=50,y=50)2.context.lineTo(300,50),该方法标识线段的终点3.context.lineWidth=10,该属性是线段的宽度4.context.strokeStyle=#0000FF,该属性是线段的颜色5.context.lineCap=round,该属性把端点设成是圆弧状的6.context.stroke(),该方法真正在画布上绘制该线段所有线段的长度都是50像素,尽管它们看上去不一样长——这是由线段的线帽(linecap)造成的视觉错觉。可用的线帽有三种:1.Context.round(blue)2.Context.square(green)3.Context.butt(purple)——默认值对接(butt)线帽是默认值,当你使用圆形(round)或是方形(square)的线帽风格时,线段的长度会增加,加上一段相当于线段宽度的长度。例如,一个长度为200像素,宽度为10像素,有着圆形或是方形线帽风格的线段,其最终的线段长度是210像素,因为每个线帽都都往线段的每一端加上了5个像素的长度。而一个长度为200像素,宽度为20像素,有着圆形或是方形的线帽风格的线段的最终长度是220像素,因为每个线帽都往线段每一端加上了10像素的长度。通过执行和修改清单1中的代码来更好地理解线段的绘制方式。清单1.在画布上创建三条不同颜色的线段!DOCTYPEHTMLhtmlheadtitleLineExample/titlestylebody{margin:0px;padding:0px;}#myCanvas{border:1pxsolid#9C9898;}/stylescriptwindow.onload=function(){varcanvas=document.getElementById(myCanvas);varcontext=canvas.getContext(2d);//有着圆形端点的蓝色线段context.beginPath();context.moveTo(50,50);context.lineTo(300,50);context.lineWidth=10;context.strokeStyle=#0000FF;context.lineCap=round;context.stroke();//有着方形端点的绿色线段context.beginPath();context.moveTo(50,100);context.lineTo(300,100);context.lineWidth=20;context.strokeStyle=#00FF00;context.lineCap=square;context.stroke();//有着对接端点的紫色线段context.beginPath();context.moveTo(50,150);context.lineTo(300,150);context.lineWidth=30;context.strokeStyle=#FF00FF;context.lineCap=butt;context.stroke();};/script/headbodycanvasid=myCanvaswidth=400height=200/canvas/body/html绘制矩形有三个方法可用来在画布上给出一个矩形的区域:1.fillRect(x,y,width,height),该方法绘制一个有填充的矩形2.strokeRect(x,y,width,height),该方法绘制一个矩形的外边框3.clearRect(x,y,width,height),该方法清空指定的区域,使之变得完全透明对于这三个方法中的每个来说,x和y表示的都是画布上相对于矩形(x=0,y=0)的左上角的位置,width和height分别是矩形的宽度和高度。图3显示了由清单2中的代码创建的三个矩形。图3.画有矩形的画布fillRect()方法创建了一个以缺省的黑色为填充色的矩形;clearRect()方法在第一个矩形的中心部分清除出一个矩形区域,该区域位于由fillRect()方法产生的矩形的中央位置;strokeRect创建了一个只有可见的黑色边框的矩形。清单2.矩形画布的代码!DOCTYPEHTMLhtmlheadtitleRectangleExample/titlestylebody{margin:0px;padding:0px;}#myCanvas{border:1pxsolid#000000;background-color:#ffff00;}/stylescripttype=text/javascriptfunctiondrawShape(){varcanvas=document.getElementById('myCanvas');varcontext=canvas.getContext('2d');context.fillRect(25,25,50,50);context.clearRect(35,35,30,30);context.strokeRect(100,100,50,50);}/script/headbodyonload=drawShape();canvasid=myCanvaswidth=200height=200/canvas/body/html绘制圆弧、曲线、圆和半圆圆和半圆都是使用arc()方法来绘制,arc()方法用到了六个参数:context.arc(cente

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功