HTML5 Canvas 起步(2) - 路径

作者:xujiwei 来源:xujiwei博客 时间:2009-05-12 12:06:00 

上一篇介绍了 HTML5 中 Canvas 的基本概念,这篇将要介绍一下 Canvas 中的基本图形。

图形的基础 - 路径

在 Canvas 中,所有基本图形都是以路径为基础的,也就是说,我们在调用 2dContext 的 lineTo、rect 等方法时,其实就是往已经的 context 路径集合中再添加一些路径点,在最后使用 fill 或 stroke 方法进行绘制时,都是依据这些路径点来进行填充或画线。

在每次开始绘制路径前,都应该使用 context.beginPath() 方法来告诉 Context 对象开始绘制一个新的路径,否则接下来绘制的路径会与之前绘制的路径叠加,在填充或画边框时就会出现问题。在绘制完成路径后,可以直接使用 context.closePath() 方法来关闭路径,或者手动关闭路径。另外,如果在填充时路径没有关闭,那么 Context 会自动调用 closePath 方法将路径关闭。

基本路径方法

1. beginPath, closePath

这两个方法在前面已经介绍过,分别用来通知 Context 开始一个新的路径和关闭当前的路径。

在 Canvas 中使用路径时,应该要保持一个良好的习惯,每次开始绘制路径前都要调用一次 beginPath 方法,否则画出来的效果难看不说,还会严重影响性能。

在下面这张图中,左边的图形在每次绘制矩形前都调用了一次 beginPath 来清除之前的路径并重新开始绘制新的路径,而后面的图形则就只在绘制所有图形前调用了一次 beginPath 来清除路径,因此,虽然这里是使用的边框色是 #666,但是右边的图形颜色比左边的深一些,因为每次使用 stroke 绘制边框时,会把之前的路径再次绘制一遍,叠加起来颜色就比原来深一些。

在 Context 中路径数较少时,如果不考虑显示效果,性能上还可以接受,但是如果 Context 中的路径数很多时,在开始绘制新路径前不使用 beginPath 的话,因为每次绘制都要将之前的路径重新绘制一遍,这时性能会以指数下降。

因此,除非有特殊需要,每次开始绘制路径前都要调用 beginPath 来开始新路径。

标签:Canvas,图形,HTML5,路径
0
投稿

猜你喜欢

  • mysql 8.0.27 安装配置方法图文教程(Windows64位)

    2024-01-19 07:37:59
  • 2008北京奥运会倒计时js代码

    2008-01-22 18:18:00
  • 利用Python爬虫给孩子起个好名字

    2022-04-25 23:40:29
  • PHP VBS JS 函数 对照表

    2024-04-29 13:55:57
  • Python连接MySQL数据库的简单便捷方法

    2024-01-18 22:46:11
  • Vue生命周期实例分析总结

    2024-06-07 15:23:38
  • Pytorch通过保存为ONNX模型转TensorRT5的实现

    2023-10-22 13:45:27
  • 如何利用触发器实现两个数据库间的同步

    2009-01-06 11:26:00
  • 初探MS SQL CE+Codesmith

    2009-05-11 09:03:00
  • 快速排序的算法思想及Python版快速排序的实现示例

    2021-10-26 18:04:24
  • 用户体验设计答疑对话(半吊子和纯外行)

    2010-11-30 21:27:00
  • MySql nion与Limit查询介绍

    2024-01-23 15:53:52
  • 玩转python爬虫之URLError异常处理

    2021-03-22 07:36:34
  • mysql 设置默认的时间值

    2024-01-18 02:49:46
  • python学习与数据挖掘应知应会的十大终端命令

    2022-03-05 10:38:19
  • Explain命令在优化查询中的实际应用

    2024-01-20 03:54:13
  • 表单特殊输入js验证

    2008-03-26 12:01:00
  • Mootools 1.2教程(19)——Tooltips

    2008-12-25 13:26:00
  • Python 代码实现各种酷炫功能

    2022-12-24 10:40:16
  • Python3多线程基础知识点

    2022-03-05 13:05:44
  • asp之家 网络编程 m.aspxhome.com