`
BuN_Ny
  • 浏览: 82409 次
  • 来自: 济南
社区版块
存档分类
最新评论

Canvas教程:基本用法

阅读更多

原文地址( https://developer.mozilla.org/En/Canvas_tutorial )

 

    <canvas>是一个新的HTML元素,这个元素可以被Script语言(通常是JavaScript)用来绘制图形。例如可以用它来画图、合成图象、或做简单的(和不那么简单的)动画。

    <canvas>最先在苹果公司(Apple)的Mac OS X Dashboard上被引入,而后被应用于Safari。基于Gecko1.8的浏览器,例如Firefox 1.5,也支持这个新元素。元素<canvas>是WhatWG Web applications 1.0也就是大家都知道的HTML 5标准规范的一部分。

    在本教程中,我将试着讲述如何在你自己的网页中使用<canvas>元素。提供的示例应该会给你些清晰概念,即用<canvas>能做些什么的。这些示例也可作为你应用<canvas>的起点。

 

开始使用之前

    用元素<canvas>并不难,只要你具有HTML和 JavaScript的基础知识。

    如上所述,并不是所有现代浏览器都支持<canvas>元素,所以你需要 Firefox 1.5或更新版本、或者其他基于Gecko的浏览器例如Opera 9、或者最近版本的Safari才能看到所有示例的动作。

 

 

基本用法

 

<canvas>元素

    让我们从<canvas>元素的定义开始吧。

<canvas id="tutorial" width="150" height="150"></canvas>

    <canvas>看起来很像<img>,唯一不同就是它不含 src 和 alt 属性。它只有两个属性,width 和 height,两个都是可选的,并且都可以 DOM 或者 CSS 来设置。如果不指定width 和 height,默认的是宽300像素,高150像素。虽然可以通过 CSS 来调整canvas的大小,但渲染图像会缩放来适应布局的(如果你发现渲染结果看上去变形了,不必一味依赖CSS,可以尝试显式指定canvas的width 和 height 属性值)。

    id  属性不是<canvas>专享的,就像标准的HTLM标签一样,任何一个HTML元素都可以指定其 id 值。一般,为元素指定 id 是个不错的主意,这样使得在脚本中应用更加方便。

    <canvas>元素可以像普通图片一样指定其样式(边距,边框,背景等等)。然而这些样式并不会对canvas实际生成的图像产生什么影响。下面我们会看到如何应用样式。如果不指定样式,canvas默认是全透明的。


替用内容

    因为 <canvas> 相对较新,有些浏览器并没实现,如Firefox 1.0 和 Internet Explorer,所以我们需要为那些不支持canvas的浏览器提供替用显示内容。

    我们只需要直接在canvas元素内插入替用内容即可。不支持canvas的浏览器会忽略canvas元素而直接渲染替用内容,而支持的浏览器则会正常地渲染canvas。例如,我们可以把一些文字或图片填入canvas内,作为替用内容:

<canvas id="stockGraph" width="150" height="150">
  current stock price: $3.15 +0.15
</canvas>
<canvas id="clock" width="150" height="150">
  <img src="images/clock.png" width="150" height="150"/>
</canvas>
 

结束标签 </canvas> 是必须的

    在Apple Safari里,<canvas>的实现跟<img>很相似,它没有结束标签。然而,为了使 <canvas> 能在web的世界里广泛适用,需要给替用内容提供一个容身之所,因此,在Mozilla的实现里结束标签(</canvas>)是必须的。

    如果没有替用内容,<canvas id="foo" ...></canvas> 对 Safari 和 Mozilla 是完全兼容的—— Safari 会简单地忽略结束标签。

    如果有替用内容,那么可以用一些 CSS 技巧来为并且仅为 Safari 隐藏替用内容,因为那些替用内容是需要在 IE 里显示但不需要在 Safari 里显示。

 

渲染上下文

    <canvas> 创建的固定尺寸的绘图画面开放了一个或多个渲染上下文(rendering context),我们可以通过它们来控制要显示的内容。我们专注于2D 渲染上,这也是目前唯一的选择,可能在将来会添加基于OpenGL ES 的 3D 上下文。

    <canvas> 初始化是空白的,要在上面用脚本画图首先需要其渲染上下文(rendering context),它可以通过 canvas 元素对象的 getContext 方法来获取,同时得到的还有一些画图用的函数。getContext() 接受一个用于描述其类型的值作为参数。

var canvas = document.getElementById('tutorial');
var ctx = canvas.getContext('2d');

    上面第一行通过 getElementById 方法取得 canvas 对象的 DOM 节点。然后通过其 getContext 方法取得其画图操作上下文。

 

检查浏览器的支持

    除了在那些不支持  的浏览器上显示替用内容,还可以通过脚本的方式来检查浏览器是否支持 canvas 。方法很简单,判断 getContext 是否存在即可。

var canvas = document.getElementById('tutorial');
if (canvas.getContext){
  var ctx = canvas.getContext('2d');
  // drawing code here
} else {
  // canvas-unsupported code here
}

 

代码模板

    我们会用下面这个最简化的代码模板来(后续的示例需要用到)作为开始。

<html>
  <head>
    <title>Canvas tutorial</title>
    <script type="text/javascript">
      function draw(){
        var canvas = document.getElementById('tutorial');
        if (canvas.getContext){
          var ctx = canvas.getContext('2d');
        }
      }
    </script>
    <style type="text/css">
      canvas { border: 1px solid black; }
    </style>
  </head>
  <body onload="draw();">
    <canvas id="tutorial" width="150" height="150"></canvas>
  </body>
</html>

    细心的你会发现我准备了一个名为 draw 的函数,它会在页面装载完毕之后执行一次(通过设置 body 标签的 onload 属性),它当然也可以在 setTimeout,setInterval,或者其他事件处理函数中被调用。

 

一个简单的例子

    作为开始,来一个简单的吧——绘制两个交错的矩形,其中一个是有alpha透明效果。我们会在后面的示例中详细的让你了解它是如何运作的。

<html>
 <head>
  <script type="application/x-javascript">
    function draw() {
      var canvas = document.getElementById("canvas");
      if (canvas.getContext) {
        var ctx = canvas.getContext("2d");

        ctx.fillStyle = "rgb(200,0,0)";
        ctx.fillRect (10, 10, 55, 50);

        ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
        ctx.fillRect (30, 30, 55, 50);
      }
    }
  </script>
 </head>
 <body onload="draw();">
   <canvas id="canvas" width="150" height="150"></canvas>
 </body>
</html>

  效果图:

 

 

 

分享到:
评论

相关推荐

    HTML5 Canvas 画布入门教程

    本教程适合H5 Canvas绘图的初学者阅读,丰富的范例能让读者快速掌握H5 Canvas画布的基本使用方法,能创建简单的动画,能检测捕捉鼠标动作。

    Html5 Canvas.docx

    来源于Mozilla网站的HTML5 Canvas教程...主要内容:Canvas的基本用法,使用Canvas来绘制图形,使用样式和颜色,绘制文本,使用图像,变形,组合,基本动画,高级动画,像素操作,点击区域和无障碍访问,Canvas的优化。

    canvas捕鱼达人.zip

    原生js html5一款捕鱼达人的手机小游戏源码...使用介绍: hgame.js 提供一个游戏需要的基本类, objproto.js提供一个游戏需要的扩展类, data.js 提供一个游戏需要的各种数据, start.js 提供一个游戏需要的解释方法。

    js Canvas实现圆形时钟教程

    阅读本文需要一点关于canvas基本用法的基础,本文实例为大家分享了HTML5 Canvas实现圆形时钟简易教程 第一步:新建一个最简单的html文件,并且在&lt;body&gt;标签中定义元素canvas。 canvas.html  &lt;html&gt; ...

    HTML5 Canvas绘制文本及图片的基础教程

    在HTML5中,我们还可以在Canvas「画布」上绘制我们所需的文本文字,其中所涉及到的CanvasRenderingContext2D对象的主要属性和方法如下: 属性或方法 基本描述 font 设置绘制文字所使用的字体,例如20px 宋体,...

    HTML5 Canvas基本线条绘制的实例教程

    1.移动画笔(moveTo())之前我们获得了画笔context,所以以此为例,给出改方法的使用实例——context.moveTo(100,100)。这句代码的意思是移动画笔至(100,100)这个点(单位是px)。记住,这里是以canvas画布的左上角为...

    实例讲解利用HTML5 Canvas API操作图形旋转的方法

    渲染图片是一个大的分支,十分重要而且很常用,所以,今天的教程是关于画布图像展示以及如何旋转图像,说不定是你现在真正想要的好东西。 总的来说,canvas旋转有两种方式:中心旋转和参照点旋转。熟练应用旋转功能,...

    html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形

    在canvas中可以很方便的用arc方法画出圆形,本来圆形也可以看作是一个宽高相等的椭圆,但canvas中根本没有画椭圆的方法,我们要用其他方法来模拟。 我们首先要明确画一个椭圆需要那些参数,基本的几何知识告诉我们,...

    JoyStick:一个使用 HTML5、Canvas 和 Vanilla JavaScript 的简单操纵杆,用于触摸和鼠标界面(不需要 JQuery),预览在

    操纵杆关于添加作者使用 HTML5、Canvas 和 JavaScript 的 Web 应用程序的简单操纵杆。 您只需在 HTML5 页面中添加一个操纵杆,基本配置就可以使用了。 操纵杆可以在触摸设备上使用,也可以在使用鼠标、触摸板或类似...

    Java 2实用教程(第三版)实验指导与习题解答

    Java 2实用教程(第三版)实验指导与习题解答 清华大学出版社 (编著 耿祥义 张跃平) 实验模版代码 建议使用文档结构图 (选择Word菜单→视图→文档结构图) 上机实践1 初识Java 4 实验1 一个简单的应用程序 ...

    slides:个人分享X

    个人分享X 1 /幻灯片该存储库保存我的共享幻灯片的代码。...分享代数效应分享webpack插件分享有角度的最佳实践分享迪诺入门介绍分享JavaScript引擎基础入门分享关于canvas的分类用法分享Deno入门分享功能的使用小技巧

    完整版《HTML5高级程序设计》3

    6.4.2 API的基本用法 127 6.5 创建HTML5 WebSockets应用程序 130 6.5.1 编写HTML文件 131 6.5.2 添加WebSocket代码 133 6.5.3 添加Geolocation代码 133 6.5.4 合并所有内容 134 6.5.5 最终代码 136 6.6 小结 138 第7...

    完整版《HTML5高级程序设计》2

    6.4.2 API的基本用法 127 6.5 创建HTML5 WebSockets应用程序 130 6.5.1 编写HTML文件 131 6.5.2 添加WebSocket代码 133 6.5.3 添加Geolocation代码 133 6.5.4 合并所有内容 134 6.5.5 最终代码 136 6.6 小结 138 第7...

    完整版《HTML5高级程序设计》4

    6.4.2 API的基本用法 127 6.5 创建HTML5 WebSockets应用程序 130 6.5.1 编写HTML文件 131 6.5.2 添加WebSocket代码 133 6.5.3 添加Geolocation代码 133 6.5.4 合并所有内容 134 6.5.5 最终代码 136 6.6 小结 138 第7...

    完整版《HTML5高级程序设计》5

    6.4.2 API的基本用法 127 6.5 创建HTML5 WebSockets应用程序 130 6.5.1 编写HTML文件 131 6.5.2 添加WebSocket代码 133 6.5.3 添加Geolocation代码 133 6.5.4 合并所有内容 134 6.5.5 最终代码 136 6.6 小结 138 第7...

    Android程序设计基础

    Android提供了对各种输入方法的支持,比如说键盘、触摸屏和轨迹球。用户界面可以针对任何屏幕分辨率和屏幕方向进行定制。  Android为用户与移动应用程序交互提供了全新的方式,同时也提供了实现这些交互的底层技术...

    D5开发人员指南-02卷

    8.4 使用TCanvas的方法 184 8.4.1 用TCanvas画线 184 8.4.2 用TCanvas画几何形状 185 8.4.3 画图的示范程序 185 8.4.4 用TCanvas输出文字 189 8.5 坐标系统和映射模式 193 8.5.1 设备坐标系 193 8.5.2 逻辑坐标系 ...

Global site tag (gtag.js) - Google Analytics