Canvas元素用来支持在网页上绘制图形图像

以前在网页中进行交互绘图是很困难的(需要依赖额外的第三方插件),而引入的Canvas特性使得作者可以很容易的在网页上绘制各种图形和图像。

Canvas提供了脚本(JavaScript)应用接口,我们可以使用JS代码来操作画布,添加各种图形以及实现用户交互。这些特性使得HTML5在开发网页游戏和一些复杂的网页动画上变得更加方便。

比如下面这个例子,使用Canvas实现了简单的在线画板功能,你可以直接在网页上绘制线条:

效果图如下:

实际上Canvas规范包含两个部分,一个是HTML5新引入的canvas元素,还有更为关键的2D渲染上下文。实际上前者只是一个容器,后者才是真正绘图的地方。它包含绘图和图形操作所需要的全部方法和丰富功能。 强调一下:绘图是在2D渲染上下文中进行的,而不是在canvas元素中进行。可以通过canvas元素访问和显示2D渲染上下文。

canvas元素的语法很简单,除了id和class外,还有两个和容器尺寸相关的属性:宽和高。

我们接下来先搞清楚2D渲染上下文的用法。

画布图形实际上是绘制在2D渲染上下文里

canvas元素并非Canvas中最强大的部分,真正的关键部分是2D渲染上下文,这是你真正绘制图形的地方。canvas元素的用途只是作为2D渲染上下文的包装器,它包含绘图和图形操作所需要的全部方法和丰富功能。理解这一点是很重要的,强调一下:绘图是在2D渲染上下文中进行的,而不是在canvas元素中进行。可以通过canvas元素访问和显示2D渲染上下文。

坐标系统

2D渲染上下文是一种基于屏幕的标准绘图平台。与其他的2D平台类似,它采用平面的笛卡儿坐标系统,左上角为原点(0,0)。向右移动时,x坐标值会增加;向下移动时,y坐标值会增加。如果你想把图形绘制到正确的位置上,一定要理解这个坐标系统。

坐标系统的1个单位通常相当于屏幕的1个像素,所以位置(24,30)是向右24像素和向下30像素的位置。有时候坐标系统的1个单位相当于2个像素(例如,在一些高分辨率显示器中),但是一般的经验法则是1个坐标单位等于1个屏幕像素。

访问2D渲染上下文

我们先创建只有一个空白canvas元素的简单HTML网页:

在这个例子中,我们将这个canvas元素赋值给一个变量,然后再通过调用getContext方法将得到的2D渲染上下文赋给另一个变量。 必须强调一点,由于我们使用了jQuery,所以需要调用get方法才能访问DOM中的canvas元素,然后才能够访问Canvas的getContext方法。

有了包含2D渲染上下文的变量之后,就可以开始绘制图形了。在上下文变量声明语句之后添加下面这行代码:

context.fillRect(0,0,200,200);

完整的JS代码如下:

上述代码将在画布上绘制如下的一个黑色矩形,从坐标(0,0)处开始,长宽均为200px:

这个矩形是黑色的,因为Canvas所绘制元素的默认颜色是黑色。

最后,如果有想一起学习web前端,HTML5及JavaScript的可以来一下我的前端群733581373,好友都会在里面交流,分享一些学习的方法和需要注意的小细节,每天也会准时的讲一些前端的炫酷特效,及前端直播课程学习

如果想看到更加系统的文章和学习方法经验可以关注的微信号:‘web前端技术圈’或者‘webxh6’关注后回复‘2018’可以领取一套完整的学习视频

html实现画板的基本操作,JavaScript操作Canvas实现画板实例分析相关推荐

  1. html实现画板的基本操作,javascript实现画板功能

    本文实例为大家分享了javascript实现画板功能的具体代码,供大家参考,具体内容如下 画板功能的实现 *{ margin: 0; padding: 0; list-style: none; } b ...

  2. html5画板的使用方法,使用canvas实现画板

    是 HTML5新增的元素,可用于通过使用JavaScript中的脚本来绘制图形.例如,它可以用于绘制图形,制作照片,创建动画,甚至可以进行实时视频处理或渲染. 思路: 尝试在画布上先用鼠标画点,获取鼠 ...

  3. python目录遍历_python文件操作之目录遍历实例分析

    本文实例讲述了python文件操作之目录遍历的方法.分享给大家供大家参考.具体分析如下: Python的os模块,包含了普遍的操作系统功能,这里主要学习与路径相关的函数: os.listdir(dir ...

  4. JavaScript键盘事件常见用法实例分析

    JavaScript 键盘事件有以下3种 keydown 键盘按键按下(如果按着不放,会持续触发该事件),可以捕获组合键. keypress 键盘非功能按键按下(在keydown之后触发,如果按着不放 ...

  5. nodejs操作sqlserver数据_实例分析nodejs基于mssql模块连接sqlserver数据库的简单封装操作...

    本文主要介绍了nodejs基于mssql模块连接sqlserver数据库的简单封装操作,结合实例形式分析了nodejs中mssql模块的安装与操作sqlserver数据库相关使用技巧,需要的朋友可以参 ...

  6. 巧用canvas实现画板功能,使用画笔在图片上涂画,橡皮擦可擦除涂画,并保存

    canvas 是HTML5的元素,使用JavaScript 在网页上绘制图像. canvas 拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. 而如果想实现画笔在画板涂画画笔在图片上涂画,橡皮擦 ...

  7. html+js+canvas实现画板涂画功能和vue+canvas实现画板涂画功能

    1,html+js+canvas实现画板涂画功能 效果如下: <!DOCTYPE HTML> <html> <head><meta charset=" ...

  8. javascript学习-canvas

    canvas 简介 html5中canvas标签用于绘制图像.不过canvas标签本身没有绘制能力,是图形的容器,需要用脚本完成绘制.getContext()方法可返回一个对象,该对象提供了用于在画布 ...

  9. html格子像素画,canvas像素画板的实现代码

    最近项目上要实现一个类似像素风格的画板,可以像素小格子可以擦除,框选变色,可以擦出各种图形,这样一个小项目看似简单,包含的东西还真不少. 绘制像素格子 我们先定义像素格子类 Pixel = funct ...

  10. HTML5 canvas 做画板画图 可以做电子白板

    HTML5 canvas 做画板画图 可以做电子白板 <html><head><meta charset="utf-8"><title&g ...

最新文章

  1. Terracotta tc-config.xml配置说明(这个真的是转的)
  2. perl语言入门第七版中文_python和c语言哪个简单
  3. 通过History Trends Unlimited通过统计台式机Chrome浏览器Top10网页历史访问量(2021.11.23)
  4. Tip:使用Extender的ResolveControlID事件
  5. C++对象内存布局--④VS编译器--单个虚拟继承
  6. NLP《词汇表示方法(三)word2vec》
  7. 还在为运维烦恼?体验云上运维服务,提意见赢好礼!【华为云分享】
  8. html下拉框传递参数,HTML通过事件传递参数到js详解及实例
  9. IntelliJ idea 添加参数
  10. C++构造函数、析构函数与抛出异常
  11. chmod命令用法_Java开发人员必须掌握的Linux命令(一)
  12. postman 测试excel下载_使用Postman轻松实现接口数据关联
  13. Atitit 可读性技术与实践范例 艾提拉著 目录 1. 提升可读性的技术类 2 1.1. 本地化命名封装 2 1.2. 表格映射表代替选择 2 1.3. 1.2. Dsl 提升抽象到dsl级别 2
  14. 【优化算法】差分蜂群优化算法(DEABC)【含Matlab源码 1423期】
  15. 外贸必备——各国常用搜索引擎
  16. Linux服务器 屏蔽国外IP访问及简单的防CC攻击拦截
  17. 【离散数学·图论】关于哈密顿图的判别条件总结
  18. 四选一多路选择器的设计与仿真
  19. duilib 控件位置
  20. 视频截取软件哪个好用?免费的视频截取软件分享

热门文章

  1. 软件开发中三员管理职责
  2. 故障报修管理系统有什么作用?
  3. [规划酱@国土空间] ArcGIS工具| 三调转换之新用地用海分类
  4. keil软件仿真打印输出配置
  5. Matlab中插值函数汇总和使用说明
  6. mac安装win10_mac磁盘空间 mac安装win10分割多少磁盘空间合适
  7. 数据产品-广告投放数据打通
  8. (附源码)Springboot小型仪器公司生产管理系统 毕业设计 031853
  9. iOS逆向专栏总目录(持续更新)
  10. php中验证码如何实现登录验证,php登录验证码怎么实现