版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、HTML5移动开发 Canvas篇内容大纲canvas简介canvas基础应用canvas动画1、canvas简介 canvas 元素本身没有绘图能力,所有的绘制工作必须通过 JavaScript实现。 画布是一个矩形区域,可以控制其每一像素。 canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。2、基础应用-创建canvas元素您的浏览器不支持HTML5。 该文本内容只在浏览器不支持html5时,显示在网页上。canvas的坐标系统。canvas的路径绘制方法 使用路径,可以绘制线条、连续的曲线以及复合图形。常用方法如下: beginPath丢弃任何当前定义的路径并且开始一条
2、新的路径。它把当前的点设置为 (0,0)。 moveTo 移动路径的绘图起点 。 lineTo 从moveTo定义的点开始绘制连续的路径,或者从上一次的lineTo的终点开始绘制。 closePath 连接最后的点和最初的点并关闭路径绘制。 fill 用颜色填充路径 。 stroke 描绘路径。实例:绘制直线。function drawLine()var cxt=$(#line)0.getContext(2d);cxt.beginPath();/定义画笔的起点cxt.moveTo(10,20);/定义画笔的终点cxt.lineTo(100,50);cxt.lineTo(50,90);cxt.s
3、troke(); 知识点补充 getContext(“2d”) 方法:返回一个用于在画布上绘图的2d环境。canvas的常用属性p设置绘制颜色的属性:fillStyle设置图形的填充颜色。 c.fillStyle = rgb(255, 0, 0); strokeStyle设置图形的描边颜色。 c. strokeStyle= “rgba(255,0,0,0.5); p设置绘制线宽的属性:lineWidth属性改变描边线条的宽度。 c.lineWidth = 20;canvas绘制矩形的方法 fillRect(x, y, width, height)方法:参数x和 y分别表示绘制的矩形的左上角顶点
4、在页面上的坐标值;参数weidth和height表示矩形的宽和高,如: cxt.fillRect(0,0,200,100); strokeRect(x, y, width, height)方法,绘制四周产生描边效果的矩形,如: cxt.strokeRect(50, 50, 100, 100); canvas的曲线绘制方法 语法: arc(centerX, centerY, radius, startingAngle, endingAngle, antiClockwise); 参数: centerX, centerY:定义一个中心点。 radius:半径。 startingAngle, endi
5、ngAngle:起始角度,结束角度。 antiClockwise:绘图方向,顺时针或逆时针。实例:绘制曲线。 var canvas = document.getElementById(myCanvas); var context = canvas.getContext(2d); var centerX = 288; var centerY = 160; var radius = 75; var startingAngle = 1.1 * Math.PI; var endingAngle = 1.9 * Math.PI; var counterclockwise = false; context
6、.arc(centerX, centerY, radius, startingAngle, endingAngle, counterclockwise); context.lineWidth = 15; context.strokeStyle = black; / line color context.stroke(); Math.PI表示180度。曲线的详细说明看看上图中的外观 。弧没有超过部分的一个假想的圆的周长 。这个虚构的循环可以被定义centerX,centerY,和半径。接下来,我们可以定义沿所定义的虚圆的周长有两个点的弧本身startingAngle和endingAngle。这两
7、个角度定义的弧度和形式来自圆心和虚线相交的弧线,我们希望创建两端。弧方法的最后一个参数是逆时针,这是一个可选的参数,它定义的两个结束点之间的 ARC路径的方向。除非另有规定,这种说法是默认为false,这将导致顺时针要绘制弧。 canvas的图形删除方法 如何删除已经绘制的图形?删除图形只需Javascript API提供的一个名为clearRect的方法,其原理是使参数指定的矩形区域背景变为透明。 假设画布长宽分别为500像素,要想删除整个画布图形,可以这样做: c.fillRect(50, 50, 100, 100); c.clearRect(0, 0, 500, 500); 上面的代码执
8、行后,你会什么都看不到,事实上填充的矩形已经绘制,只是瞬间被删除了,所以你看不到它。 如果你不清楚画布的具体宽高,清除整个画布可以这样: c.clearRect(0, 0, canvas.width, canvas.height); 删除画布中的区域删除画布中的区域 如果你不想删除整个画布的图形,而仅仅删除画布中的一个区域,假如,你绘制了一个黑色的正方形,旁边绘制了一个红色的正方形: c.fillRect(50, 50, 100, 100); c.fillStyle = #f00; c.fillRect(200, 50, 100, 100); 接下来你可以通过clearRect删除黑色背景的正
9、方形而只保留红色正方形: c.clearRect(50, 50, 100, 100); 练习:绘制如下图形。实例:体会beginPath的作用。脚本分析var canvas = document.getElementById(canvas); var ctx = canvas.getContext(2d); ctx.strokeStyle = #666; function useBeginPath() for (var i = 0; i 5; +i) ctx.beginPath(); ctx.rect(10 + i*20, 10 + i*20, 210 - i*40, 210 - i*40);
10、 ctx.stroke(); 脚本分析function notUseBeginPath() ctx.beginPath(); for (var i = 0; i 5; +i) ctx.rect(240 + i*20, 10 + i*20, 210 - i*40, 210 - i*40); ctx.stroke(); 3、canvas动画 图片处理 阴影处理 绘制笔迹的保存和恢复 画布坐标系统的处理 文本处理实例:简易时钟 浏览效果添加文本fillText方法。 var text = Hello, World!; context.font = italic 60px serif; context
11、.fillText(text, 40, 40); 该文本不是真实的文字, 而是栏栅化的图形. 绘制文本有两种方法, 分别是用于描边的 strokeText 和用于填字的 fillText 方法. shadowOffsetX, shadowOffsetY 属性属性 指定阴影的水平偏移和垂直偏移。较大的值使得阴影化的对象似乎漂浮在背景的较高位置上。默认值是 0。阴影效果得到 Safari 的支持,但是并没有得到 FireFox 1.5 或 Opera 9 的支持。shadowBlur 属性属性 指定羽化阴影的程度。默认值是 0。阴影效果得到 safari 的支持,但是并没有得到 FireFox 1
12、.5 或 Opera 9 的支持。实例:小熊顶蘑菇如何在画布上放置图像?如何在画布上放置图像?var c=document.getElementById(myCanvas); var cxt=c.getContext(2d); var img=new Image(); img.src=“flower.png” ;cxt.drawImage(img,0,0); 要绘制的图像的左上角的位置 。图片变形图片变形 drawImage(image, x, y, width, height) var canvas = document.getElementById(myCanvas);var ctx =
13、canvas.getContext(2d); ctx.drawImage(myImage, 50, 50, 100, 100);ctx.drawImage(myImage, 125, 125, 200, 50);ctx.drawImage(myImage, 210, 210, 500, 500);图片裁剪图片裁剪 drawImage(image,sourceX,sourceY,sourceWidth,sourceHeight,destX,destY,destWidth, destHeight)参数很多,但基本上你可以把它想成从原图中取出一个矩形区域,然后把它画到画布上目标区域里。var can
14、vas = document.getElementById(myCanvas);var ctx = canvas.getContext(2d);ctx.drawImage(myImage, 0, 0, 50, 50, 25, 25, 100, 100);ctx.drawImage(myImage, 125, 125, 100, 100, 125, 125, 150, 150);ctx.drawImage(myImage, 80, 80, 100, 100, 250, 250, 220, 220);onload函数大多数支持canvas标记的浏览器的当前版本中,当图片还没有加载完成时,如果你要去
15、画它,结果是什么事情都不会发生。也就是说,如果你想画一个图片,你需要等它完全加载。你可以使用图片对象的onload函数来进行判断。 myImage = new Image();myImage.src = image.png;myImage.onload = function() / Draw image.Translate方法方法 语法:translate(x,y); 功能:转换画布的用户坐标系统,为画布的变换矩阵添加水平的和垂直的偏移。 实例:实例:translate方法的应用。方法的应用。 var cxt=document.getElementById(canvas) .getContex
16、t(2d); cxt.translate(50,50); cxt.strokeStyle=green; cxt.strokeRect(0,0,50,50);此时的坐标(0,0)实际上是(50,50)。save、restore方法 save() 方法把当前状态的一份拷贝压入到一个保存图像状态的栈中。这就允许您临时地改变图像状态,然后,通过调用 restore() 来恢复以前的值。 restore() 方法从栈中弹出存储的图形状态并恢复 CanvasRenderingContext2D 对象的属性、剪切路径和变换矩阵的值。 实例:save()的应用。var cxt=document.getElem
17、entById(canvas).getContext(2d); /绘制绿色直线cxt.beginPath();cxt.moveTo(100,50);cxt.lineTo(100,100);cxt.strokeStyle=green;cxt.stroke();cxt.save(); /绘制红色直线cxt.beginPath();cxt.moveTo(200,50);cxt.lineTo(200,100);cxt.strokeStyle=red; cxt.restore(); cxt.stroke();图1:实例:分析结果。 第8行的save方法保存了画布中此时的画笔状态,即strokeStyle的属性值“green”。 第14行的restore方法恢复了之前的画笔状态,即画笔的green颜色。覆盖了第14行画笔的red值。 因而绘制出2条绿色直线。实例:save()&restroe()。var cxt=document.getElementById(canvas).getContext(2d); c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职(学前教育)学前心理学期末测试题及解析
- 2025年高职第一学年(食品质量与安全)微生物检测试题及答案
- 2025年中职医学影像技术(影像诊断基础)试题及答案
- 2025年大学第三学年(护理学)传染病护理学阶段测试试题及答案
- 2025年高职土木港口航道(航道疏浚)试题及答案
- 2025年大学大四(药学)临床药学实践综合测试卷
- 2025年中职(会计电算化)账务处理模拟试题及答案
- 2025年大学护理伦理学(护理道德实践)试题及答案
- 2025年高职旅游服务与管理(旅游线路策划)试题及答案
- 高一生物(遗传的基本规律)2025-2026年下学期期末测试卷
- 数字化工地培训
- 班组长管理技巧及方法
- 2025年骨干教师考试试题(含答案)
- 2025年上海市事业单位招聘考试教师招聘体育学科专业知识试卷(综合)
- 普货运输安全培训内容课件
- 2025年统计学多元统计分析期末考试题库:多元统计分析在医学研究中的实证研究试题
- 2025至2030年中国搜索引擎消费市场全面调研及行业投资潜力预测报告
- 2026版高中汉水丑生生物-第四章第1节人类活动对生态环境的影响
- 2025年龙江森工面试题及答案
- 物业安全经理岗位面试问题及答案
- 诉讼方案意见书
评论
0/150
提交评论