`

Html5-描绘各种图形

 
阅读更多

原文参见:http://www.html5.jp/canvas/how2.html

 

Canvas不仅仅能画线,它还包含画其它各种图形的方法。本文介绍其中几个方法。

 

1. 矩形(长方形)

前一篇文章当中,虽然使用画线的方式描画出了矩形,但是Canvas也包含一个直接就能画出矩形的方法。

ctx.fillRect(x, y, width, height)

画有背景色的矩形,x, y是矩形左上角的坐标位置,width是矩形的宽度,height是矩形的高度。

ctx.strokeRect(x, y, width, height)

画没有背景色的矩形,只有边框。参数和fillRect方法相同。

ctx.clearRect(x, y, width, height)

清除矩形,被清除的部分变为透明。参数和fillRect方法相同。

 

接下来就看看这三个方法的具体使用,Html代码l如下:

<h2>fillRect()</h2>
<canvas id="c1" width="140" height="140"></canvas>
<h2>strokeRect()</h2>
<canvas id="c2" width="140" height="140"></canvas>
<h2>clearRect()</h2>
<canvas id="c3" width="140" height="140"></canvas>

 

分别对这三个Canvas标签,在Javascript代码中使用前面的三种方法。

onload = function() {
  draw1();
  draw2();
  draw3();
};
/* fillRect() 的例子 */
function draw1() {
  var canvas = document.getElementById('c1');
  if ( ! canvas || ! canvas.getContext ) { return false; }
  var ctx = canvas.getContext('2d');
  ctx.beginPath();
  ctx.fillRect(20, 20, 80, 40);
}
/* strokeRect() 的例子 */
function draw2() {
  var canvas = document.getElementById('c2');
  if ( ! canvas || ! canvas.getContext ) { return false; }
  var ctx = canvas.getContext('2d');
  ctx.beginPath();
  ctx.strokeRect(20, 20, 80, 40);
}
/* clearRect() 的例子 */
function draw3() {
  var canvas = document.getElementById('c3');
  if ( ! canvas || ! canvas.getContext ) { return false; }
  var ctx = canvas.getContext('2d');
  ctx.beginPath();
  ctx.fillRect(20, 20, 100, 100);
  ctx.beginPath();
  ctx.clearRect(50, 70, 60, 30);
}

 

结果如下图所示:

  使用fillRect方法,描绘出了背景色为黑色的矩形。


  使用strokeRect方法,描绘出了只有边框的矩形。

 

  为了理解clearRect方法,首先使用fillRect方法画出有背景色的矩形。然后使用clearRect方法,将其中一部分清除掉,途中白色的小矩形就是被清除的部分。使用的ExplorerCanvas 0002使用的话,这个方法的实际行为和期待的行为是不一致的。因此在IE上看到的效果是,canvas标签上的所有图形都被清除掉了。

 

这些方法都是在调用的时候图形就描绘出来了,因此不用特意再去调用fill方法或者stroke方法。

 

2. 圆弧

使用arc方法描绘圆和圆弧。

ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise)

x 圆点横坐标

y 圆点纵坐标

radius 园半径

startAngle 圆弧的开始角度,X轴正半轴开始顺时针旋转,用弧度表示。

endAngle  圆弧的结束角度,X轴正半轴开始顺时针旋转,用弧度表示。

anticlockwise 指定画圆弧的方向。true的话,逆时针旋转,false的话,顺时针旋转画圆弧。

 

startAngle和endAngle指定的角度的单位为弧度,例如360度的话,就是2*Math.PI。 任意的角度转化为弧度的公式为,度数*Math.PI/180。例如,15度的话,就是 15*Math.PI / 180。

onload = function() {
  draw1();
  draw2();
  draw3();
};
/* 画圆 */
function draw1() {
  var canvas = document.getElementById('c1');
  if ( ! canvas || ! canvas.getContext ) { return false; }
  var ctx = canvas.getContext('2d');
  ctx.beginPath();
  ctx.arc(70, 70, 60, 0, Math.PI*2, false);
  ctx.stroke();
}
/* 画圆弧 */
function draw2() {
  var canvas = document.getElementById('c2');
  if ( ! canvas || ! canvas.getContext ) { return false; }
  var ctx = canvas.getContext('2d');
  ctx.beginPath();
  ctx.arc(70, 70, 60, 10 * Math.PI / 180, 80 * Math.PI / 180, true);
  ctx.stroke();
}
/* 画有背景色的圆弧 */
function draw3() {
  var canvas = document.getElementById('c3');
  if ( ! canvas || ! canvas.getContext ) { return false; }
  var ctx = canvas.getContext('2d');
  ctx.beginPath();
  ctx.arc(70, 70, 60, 10 * Math.PI / 180, 80 * Math.PI / 180, true);
  ctx.fill();
}

 

结果如下:

  arc(70, 70, 60, 0, Math.PI*2, false)。以坐标(70, 70)为圆心,60像素为半径,从0度开始顺时针旋转360度花圆弧。圆形的话,不论anticlockwise为true或者false,画出的图形都是一样的。

 


  arc(70, 70, 60, 10*Math.PI/180, 80*Math.PI/180, ture)。以坐标(70, 70)为圆心,60像素为半径,从10度开始逆时针旋转到80度的位置画圆弧。10度,80度的度数都是指以X轴正半轴开始顺时针旋转的度数。即使参数anticlockwise指定为true,表示位置的度数也不是逆时针旋转得出的度数,这一点需要注意。

 


  使用fill方法填充前面画出的圆弧的话,圆弧的开口部分就会被直线连接,而得出图形,并不是扇形,这一点需要注意。

 

单只调用arc方法不能描绘出图形,必须再调用stroke方法或者fill方法。

 

截至目前,虽然画了直线和图形,但都是黑白颜色。下一篇文章中将介绍如何给图形填充颜色。>> 填充颜色

  • 大小: 3 KB
  • 大小: 3.1 KB
  • 大小: 3 KB
  • 大小: 5.9 KB
  • 大小: 5.7 KB
  • 大小: 4.8 KB
分享到:
评论

相关推荐

    HTML5-step by step

    5. SVG矢量图:SVG(Scalable Vector Graphics)是用于描绘二维图形的标准,可以在HTML5文档中嵌入,实现高分辨率、可缩放的图形。 6. Web存储:HTML5提供了离线存储功能,如localStorage和sessionStorage,使得...

    HTML5------PPT.rar

    4. **SVG矢量图**:SVG(Scalable Vector Graphics)是一种用于描绘矢量图形的标记语言,可以在HTML5文档中内联使用,适合创建高质量、可缩放的图像。 5. **离线存储**:通过localStorage和sessionStorage,HTML5...

    基于HTML5流程图绘制代码

    HTML5流程图绘制技术是一种利用现代浏览器的Canvas或者SVG元素,结合JavaScript库来实现动态、交互式的图形绘制功能。在本项目中,我们将探讨如何基于HTML5实现流程图和拓扑图的绘制,以及如何利用丰富的图形选项...

    html5-svg-firebird

    HTML5与SVG(可缩放矢量图形)是现代网页开发中的重要技术,它们共同为开发者提供了丰富的视觉表现力和动态交互能力。Firebird在这一上下文中可能指的是一个项目、示例或者是一个与HTML5 SVG相关的库。在这个压缩包...

    HTML5 3D云层效果

    在实际项目中,HTML5 3D云层效果可以应用于各种场景,如网页背景、游戏环境或是互动展示。这样的效果不仅提升了用户体验,还展示了HTML5强大的动态图形处理能力。为了学习和应用这一技术,你可以通过解压...

    Html5源码--程序员向女友表白专用代码

    3. **SVG(Scalable Vector Graphics)**:SVG是一种用于描绘矢量图形的语言,适合创建高质量的图形,即使放大也不会失真。表白页面可能使用SVG来创建精致的图案,如花环、爱心等。 4. **Audio和Video**:HTML5提供...

    HTML5 SVG图形轮廓线条绘制动画插件-vivus

    HTML5 SVG图形轮廓线条绘制动画插件Vivus是一个强大的工具,专为开发者设计,用于在网页中创建引人入胜的SVG动画效果。SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它允许在网页上创建高质量、可...

    HTML5 Canvas灰太狼图形生成实例.rar

    这个“HTML5 Canvas灰太狼图形生成实例”展示了如何利用Canvas API来创建复杂的矢量图形,尽管没有填充颜色,但其精确的线条和形状描绘已经充分展示了HTML5 Canvas的能力。 在HTML5中,Canvas是一个二维绘图表面,...

    HTML5程序设计基础教程-课件

    Canvas提供了一个基于JavaScript的画布,开发者可以通过编程绘制动态图像,而SVG则是一种用于描绘矢量图形的标记语言,适合创建高质量的图形,且其大小不会随着放大而失真。 “第12章HTML5.ppt”可能讲解了Web ...

    HTML5项目实战 HTML5项目实战 HTML5项目实战

    另一项重要特性是SVG(Scalable Vector Graphics),这是一种用于描绘矢量图形的标记语言,可以在任何分辨率下保持清晰。在HTML5项目中,SVG可以用于创建高质量的图标、图形以及复杂的动画,尤其适合需要进行缩放或...

    svg图形描边,通过html5标签实现六边形描边动画

    在IT领域,SVG(Scalable Vector Graphics)是一种用于描绘二维图形的标准,它基于XML语法,支持动态性和交互性。本教程将深入讲解如何利用HTML5的`&lt;svg&gt;`标签来创建六边形描边动画,同时引入CSS动画效果,为网页...

    基于HTML5的数学函数图形绘制插件XCalc源码.zip

    "基于HTML5的数学函数图形绘制插件XCalc源码"是一个利用HTML5特性来实现数学函数图形绘制的工具,对于学习Web前端开发、数学可视化以及教育领域都有很高的实用价值。 首先,我们需要理解HTML5中的Canvas元素,这是...

    html5 canvas太阳系九大行星运行动态图代码

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的交互式用户体验。在这个特定的项目中,“html5 canvas太阳系九大行星运行动态图代码”是一个使用HTML5 Canvas API实现...

    HTML5自学教材源码

    这个"HTML5自学教材源码"提供了HTML5中的一个重要组件——canvas的学习资源,它主要用于在网页上绘制图形、创建动画以及构建游戏。Canvas是HTML5的一个核心元素,允许开发者通过JavaScript进行动态图像处理,为网页...

    html5 svg、canvas创建各种图像和填充纹理图片效果

    在HTML5中,我们可以通过`&lt;svg&gt;`标签直接在文档中嵌入SVG图形,并使用`&lt;path&gt;`, `&lt;rect&gt;`, `&lt;circle&gt;`, `&lt;polygon&gt;`等元素来描绘形状。例如,我们可以用以下代码创建一个简单的圆形: ```html ...

    HTML5 Canvas 赛车游戏

    开发者会定义各种图形路径来描绘赛道,可能使用`beginPath()`、`moveTo()`、`lineTo()`等方法来绘制直线、曲线,甚至利用`arc()`绘制圆弧表示弯道。赛车则可能是通过组合多个形状(如矩形、圆形)来构建,通过改变...

    上上签 - 基于html5的签到系统.zip

    【上上签 - 基于html5的签到系统】是一个使用HTML5技术构建的轻量级签到应用,适用于各种活动、会议或者在线教育场景。HTML5是现代网页和移动应用开发的标准,它提供了丰富的功能和强大的性能,使得开发者能够创建出...

    html5经典示例

    本压缩包“HTML5经典示例”包含7个精心挑选的示例,旨在展示HTML5的强大之处,以及如何通过它来实现各种华丽的视觉效果。 1. **Canvas画布** HTML5的Canvas元素提供了在网页上动态绘制图形的能力。通过JavaScript...

    HTML5 canvas哆啦A梦机器猫图形代码.zip

    HTML5的canvas元素是网页开发中的一个强大工具,它允许开发者在网页上动态绘制图形,提供了丰富的绘图功能,使得创建交互式或者动画图形成为可能。在这个“HTML5 canvas哆啦A梦机器猫图形代码”中,我们看到的是利用...

    HTML5 SVG水波纹背景图形特效.zip

    本资源“HTML5 SVG水波纹背景图形特效.zip”包含了一套实现水波纹效果的代码示例,这种特效常用于网站背景,以增加视觉吸引力和互动性。 SVG是一种基于XML的矢量图形标准,它允许开发者在网页上创建清晰、可缩放的...

Global site tag (gtag.js) - Google Analytics