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

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>

  效果图:

 

 

 

分享到:
评论

相关推荐

    canvas教程

    基本用法 canvas 元素让我们从 canvas 元素本身开始教学。 canvas 元素只有两个属性:width 和 height。这两者非必须,也可以使用 DOM 属性(propertie)设定。如果不指定宽和高,canvas 就会使用 300 像素宽和 ...

    Html5 Canvas史上最全面的教程

    ##### 基本用法 **定义Canvas元素** ```html &lt;canvas id="tutorial" width="150" height="150"&gt;&lt;/canvas&gt; ``` - **`id` 属性**:这是一个通用的HTML属性,用于标识特定的元素。在Canvas中,我们通常为其分配一个...

    HTML5canvas初级入门教程.pdf

    这个初级入门教程主要涵盖了Canvas的基本概念、使用方式以及一些基本的绘图操作。 首先,Canvas是一个HTML标签,通过`&lt;canvas&gt;`元素在网页中创建一个可绘制的区域。例如: ```html &lt;canvas width="500" height="500...

    Android HTML5 Canvas Tutorial:Android HTML5 Canvas教程-开源

    在这个开源的Android HTML5 Canvas教程中,我们将深入探讨如何在Android应用中利用Canvas进行交互式图形渲染。 首先,Canvas是HTML5的一个核心元素,它允许通过JavaScript进行动态图形绘制。在Android平台上,...

    HTML5 Canvas基础教程

    5. **形状绘制**:Canvas支持绘制各种基本形状,如矩形(`rect()`, `fillRect()`, `strokeRect()`)、圆形(`arc()`, `arcTo()`)和椭圆(`ellipse()`)。 6. **文本操作**:可以使用`fillText()`和`strokeText()`...

    HTML5资料]Canvas教程.doc

    ### HTML5 Canvas 教程详解 #### 一、引言 ...其中,`&lt;canvas&gt;`元素作为HTML5的一个...通过本教程的学习,开发者可以掌握`&lt;canvas&gt;`的基本使用方法及其在实际项目中的应用场景,进一步提升Web项目的视觉体验和技术含量。

    html5 canvas 教程 pdf中文版 天涯浪子

    这个“HTML5 Canvas 教程 pdf中文版 天涯浪子”资源显然是一份专为初学者和进阶者设计的指南,旨在帮助他们理解和掌握Canvas的使用技巧。 在Canvas中,你可以创建各种复杂的图形,如2D图表、游戏场景、动画,甚至是...

    HTML5 Canvas基础教程源代码

    在HTML5 Canvas基础教程中,你可能会学习到如何绘制基本形状、组合形状、处理颜色和渐变、绘制文本、处理图像、实现动画效果、响应用户交互以及优化Canvas性能等内容。这些知识对于创建动态网页和游戏至关重要。通过...

    HTML5CANVAS初级入门教程.pdf

    HTML5 Canvas 的基本概念就是使用 canvas 元素来绘制图形。canvas 元素是一个 HTML 标签,用于定义一个画布区域。使用canvas 元素时,需要指定 width 和 height 属性,以定义画布的尺寸。在 canvas 元素内部,可以...

    [电子书][Web前端技术]HTML5 Canvas教程

    这个【电子书】【Web前端技术]HTML5 Canvas教程】应该会深入讲解Canvas的基本概念、语法以及实际应用。 首先,Canvas是一个HTML5元素,通过JavaScript与CSS结合,可以实现交互式的图形展示。它的基本结构是`&lt;canvas...

    [HTML5]Canvas教程

    本文将深入探讨 `&lt;canvas&gt;` 的基础知识及其基本用法。 #### 二、Canvas 元素简介 `&lt;canvas&gt;` 是一个用于通过脚本(通常为 JavaScript)进行绘图的 HTML 元素。它可以用来创建各种图形,如图表、图片组合或动画等。...

    html5 canvas教程

    #### 二、Canvas 基本用法 ##### 2.1 `&lt;canvas&gt;` 元素 ```html &lt;canvas id="tutorial" width="150" height="150"&gt;&lt;/canvas&gt; ``` - **元素定义**: - `&lt;canvas&gt;` 类似于 `&lt;img&gt;` 元素,但它没有 `src` 和 `alt` ...

    Htm5 Canvas教程

    这个教程旨在详细介绍HTML5 Canvas的基本用法以及如何利用它来实现各种功能。 首先,让我们深入理解 `&lt;canvas&gt;` 元素。这是一个内联元素,类似于 `&lt;img&gt;`,但它不包含 `src` 和 `alt` 属性,因为它的内容不是通过...

    HTML5 Canvas核心技术:图形、动画与游戏开发 mobi

    除了基本的绘图和动画,Canvas还支持事件监听,这使得用户交互成为可能。例如,通过监听鼠标点击或触摸事件,可以响应用户的操作,改变图形的状态或者启动特定的动画。 学习HTML5 Canvas还需要理解SVG(Scalable ...

    HTML5 canvas 基础教程

    本基础教程由(英)Rob Hawkes撰写,旨在帮助初学者掌握Canvas的基本概念和实用技巧。 一、HTML5 Canvas概述 HTML5 Canvas是一个基于矢量图形的画布元素,通过JavaScript API来绘制和操作图像。这个API提供了大量的...

    Delphi Canvas方法在图片上写入文字.rar

    这个“Delphi Canvas方法在图片上写入文字.rar”压缩包可能包含了如何利用Canvas对象在图片上添加文本的示例代码或教程。在Delphi中,Canvas是一个接口,它提供了在各种图形设备上进行绘图的方法,如在TBitmap、...

    [HTML5资料]Canvas教程

    HTML5的Canvas教程是Web开发中的一个重要组成部分,它允许开发者使用JavaScript进行动态图形绘制,创造出丰富的交互式用户体验。Canvas元素是HTML5引入的新特性,它为网页提供了在浏览器内进行2D图形绘制的能力。 ...

    HTML5canvas入门教程

    本文介绍了 `&lt;canvas&gt;` 的基本用法以及如何使用 JavaScript 在 `&lt;canvas&gt;` 上绘制图形。掌握这些基本概念后,可以进一步探索更高级的功能和技术,例如动画、路径绘制等。随着 Web 技术的发展,Canvas 的应用范围也在...

Global site tag (gtag.js) - Google Analytics