深入了解HTML5 Canvas标签的基本用法

这篇文章介绍的内容是深入了解HTML5 Canvas标签的基本用法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

基本用法

使用 标签在页面上创建画布元素,画布一旦创建,就可以使用Javascript提供的一套强大的Canvas API编写代码,在画布中绘制任意图形,甚至加入高级动画。

在Canvas中绘制图形,一般需要五步,依次为:

1)创建画布

在HTML代码的body中,使用标签创建画布元素。创建时,要为该元素定义id属性,因为Javascript需要根据该id来获取画布元素。

画布的默认宽度为300px,高度为150px,可以通过元素的width属性自定义其宽度,height属性自定义其高度。代码如下:


上述代码,在页面中创建了一个画布,其id为”canvas”,宽度为300px,高为300px。

说明:

1、默认情况下,画布本身没有任何外观,只是一块透明区域,什么也看不见,可以通过CSS来控制,让其可见。跟其它HTML元素一样,也可以通过CSS来定义canvas元素的尺寸、增加边框、设置内边距、外边距等。并且,CSS属性的继承规则也同样适用,如在canvas内添加的文字,默认会继承canvas元素本身的字体属性。

需要特别注意的是,画布的尺寸和CSS定义的尺寸是完全不同的概念。画布的尺寸是由画布元素的width和height属性定义的,而CSS中定义的尺寸是画布元素在页面中显示的尺寸。如果两者定义的尺寸不相同,则画布上的像素会自动缩放,以适合CSS中定义的尺寸。另外,画布中的坐标,也是根据画布的width和height属性定义的。

2、画布的尺寸一旦定义,就不能修改,除非重置画布。重置画布的width属性或height属性,都会清空整个画布,擦除当前路径,并重置所有的图形属性到初始状态。

3、由于是HTML5中新增的元素,一些老浏览器(如IE8及以下版本)不支持元素。可以在元素内部提供替代图片、或文本说明,为访问者提供友好的提示信息。如:

id="canvas" width="300" height="300">您的浏览器不支持canvas。

2)获取绘制上下文

现在画布已经有了,要在画布上绘制图形,还需要一只画笔。获取画笔的方法如下:

var canvas = document.getElementById("canvas");var context = canvas.getContext("2d");

由于画笔是属于画布的,所以先要调用getElementById()方法获得画布的访问权。然后,调用画布对象的getContext()方法来获取画笔,这里的字符串参数”2d”,用来定义画笔的种类,”2d”表示绘制二维图形的画笔。当然,还会有”3d”,但目前还不支持。

画笔在Canvas 中被称作“绘制上下文”,Canvas API基本上都是定义在“绘制上下文”对象上,而非元素上。

3)定义绘制路径

Canvas中的所有基本图形,都是根据路径来绘制的。首先,调用beginPath()方法开始一条新的路径;然后,定义路径及子路径;最后,调用closePath()方法来关闭。代码如下:

context.beginPath();context.rect(20, 40, 200, 80);context.closePath();

上述代码中,rect()方法绘制了一条矩形路径,该矩形路径的左上顶点坐标为x=20,y=40,矩形宽度为200px,长度为80px。

说明:Canvas的坐标系

默认情况下,Canvas 的坐标系以Canvas 元素的左上角为坐标原点(0, 0)。水平方向为x轴,并向右增长;垂直方向为y轴,并向下增长。如图 4‑1所示:

Canvas的默认坐标系统图4-1 Canvas的默认坐标系统

画布上每一个点的坐标都直接映射到一个CSS像素上,点可以使用浮点数来指定坐标,但它不会自动转换为整型值。

需要注意的是,此时,所绘制的内容并不会立即显示出来。因为这里只是定义一条不可见的路径,并未在画布上绘制任何图形。稍后,可以调用stroke()或fill()方法,来执行绘制动作,使其可见。

4)设置图形属性

context.strokeStyle = '#f00';  // 设置线条样式context.fillStyle = "#ccc";   // 设置填充样式

上述代码设置矩形路径的轮廓线条的颜色为红色(#f00),填充颜色为灰色(#ccc)。该步骤为可选,如果省略,则使用Canvas提供的默认属性绘图。

5)绘制图形

Canvas默认提供两种绘制方法:stroke()方法和fill()方法。stroke()方法沿着路径的坐标点依次绘制线条,fill()方法填充路径形成的闭合区域。

这两个方法都作用在当前路径的所有子路径上,并且都不更改当前路径,所以它们可以被同时调用。代码如下:

context.stroke();context.fill();

如果存在多条路径,则每条路径都要分别调用stroke()方法或fill()方法,否则,该路径不会被绘制,该路径所定义的图形不会显示在画布中。

至此,在画布中绘制图形的过程就全部完成了,图形已经真正绘制到画布上了。当然,在实际应用中,最好将这些绘制过程封装在一个函数中,并在页面加载完成后,再调用绘制函数来绘制图形。本实例的完整代码如下:

$(function(){   drawRect();});function drawRect() {  var canvas  = document.getElementById("canvas");  var context = canvas.getContext('2d');       context.beginPath();  context.rect(20, 40, 200, 80);  context.closePath();  context.strokeStyle = '#f00';  context.fillStyle = "#ccc";  context.stroke();  context.fill();}

在浏览器中的运行效果如图 4‑2所示:

Canvas中绘制图形    图4-2 Canvas中绘制图形

相关推荐:

canvas 使用方法详解

Canvas的基本使用

HTML5 canvas绘图基本使用方法

以上就是深入了解HTML5 Canvas标签的基本用法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1546022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 17:45:43
下一篇 2025年12月21日 17:45:57

相关推荐

  • 深入了解HTML5之sessionStorage对象

    这篇文章介绍的内容是深入了解HTML5之sessionStorage对象,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 HTML5 sessionStorage会话存储 sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗…

    2025年12月21日 好文分享
    000
  • 基于 HTML5 Canvas 实现的文字动画特效

    这次的这篇文章给大家分享的内容是基于 html5 canvas 实现的文字动画特效,非常的而是用,有需要的朋友可以用来参考一下 前言 文字是网页中最基本的元素,一般我们在网页上都是展示的静态文字,但是就效果来说,还是比较枯燥的。文字淡入淡出的动画效果在项目中非常实用,如果有某些关键的文字,可以通过这…

    2025年12月21日
    000
  • HTML5实现拖拽功能步骤详解

    这篇文章主要介绍了HTML5实现拖拽功能步骤详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 问题:突然奇想,想在电影网上加一个收藏(类似于购物车的东西),可以通过拖拽图片进行添加 前提:需要了解HTML5中国Loacl Strorage(当然,其他的web存储也行,…

    好文分享 2025年12月21日
    000
  • HTML5调用移动浏览器相机问题

    因为浏览器和微信浏览器区别,导致直接使用capture=”camera”,浏览器会调用相机。解决方案,就是在组件加载时候,判断一下内核 代码如下 头像 @@##@@ @@##@@ import { USER_DEFAULT_BASE64, HEAD_IMAGE_SIZE_TO_BIG} from ‘…

    好文分享 2025年12月21日
    000
  • 实例详解Html5的背景应用

    这篇文章主要介绍了浅谈Html5的背景属性,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 1、背景属性复习:background-imagebackground-colorbackground-repeatbackground-positionbackground-at…

    2025年12月21日
    000
  • 详解HTML5 表单属性

    今天本文主要和大家详细介绍HTML5的表单属性,需要的朋友可以参考下,希望能帮助到大家。 表单事件: oninput:当用户输入的时候触发。oninvalid:当验证未通过时触发。 demo.html: Documentform { width: 100%; max-width: 640px; mi…

    好文分享 2025年12月21日
    000
  • 9个经典华丽的html5图表应用

    提及图表应用,用HTML5和jQuery制作的网页图表更加方便和使用,而且无论是功能还是外观,定制起来都比较灵活。本文就向大家分享9个经典华丽的HTML5图表应用,也许对你的前端开发会有帮助,一起来看看吧。 1、超酷HTML5 Canvas图表应用Chart.js 今天我们要介绍一款基于HTML5 …

    2025年12月21日 好文分享
    000
  • 关于HTML5的知识小结

    本文给大家带来关于HTML5的知识小结,需要的朋友可以参考下,希望能帮助到大家。下面跟随小编一起来看一下吧。 一:移动开发知识点 一. 使用rem作为单位 html { font-size: 100px; } @media(min-width: 320px) { html { font-size: …

    好文分享 2025年12月21日
    000
  • h5+js实现本地文件读取和写入

    这次给大家带来h5+js实现本地文件读取和写入,h5+js实现本地文件读取和写入的注意事项有哪些,下面就是实战案例,一起来看一下。 代码如下: 读取本地文件 Document //点击导入按钮,使files触发点击事件,然后完成读取文件的操作 $(“#fileImport”).click(funct…

    好文分享 2025年12月21日
    000
  • HTML5联合canvas实现图片压缩

    这次给大家带来html5联合canvas实现图片压缩,主要以代码的形式体现,下面就是实战案例,一起来看一下。 lianxi 名字: 上传: button var file = document.querySelector(‘#fileimage’) var username = document.q…

    好文分享 2025年12月21日
    000
  • HTML5之网页存储

    这次给大家带来HTML5之网页存储 ,HTML5之网页存储 的注意事项有哪些,下面就是实战案例,一起来看一下。 html5 网页存储 web storage 一、认识Web Storage Web Storage是一种将少量数据存储在客户端(client)磁盘的技术。只要支持WebStorage A…

    2025年12月21日
    000
  • html5 viewport总结讲述

    本篇文章是关于HTML5中的viewport的一个讲述,对于HTML5中viewport不太熟悉的同学,我们可以一起看看本篇文章!来详细的了解一下html5中的viewport 总结下来无非围绕三个问题: 1、为什么要设置虚拟窗口 起初是为了使得虚拟窗口的分辨率和pc端接近,这样虚拟窗口依然能够完整…

    好文分享 2025年12月21日
    000
  • 讲讲HTML5中被废弃的标签

    本篇文章讲述了HTML5中被废弃的标签,大家对HTML5中被废弃的标签不了解的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧!切记废弃的html标签最好不要使用哦! 在笔试或者面试中常常会遇到html5新标准的问题,下面是总结的html5废弃标签。 第一类:表现性元素 basefont …

    好文分享 2025年12月21日
    000
  • 了解一下HTML5中新增加的标签

     本篇文章讲述了HTML5中新增加的标签,大家对HTML5中新增加的标签不了解的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧! 在笔试或者面试中常常会遇到html5新标准的问题,如新增了哪些新标签,api,或者干脆问新增了哪些新特性,下面是总结的html5新增标签。 html5中新增标…

    好文分享 2025年12月21日
    000
  • 企业开发中使用H5有哪些注意事项

    这次给大家带来企业开发中使用h5有哪些注意事项,企业开发中使用h5的注意事项有哪些,下面就是实战案例,一起来看一下。 3在企业开发中,想让多个盒子的顶部对齐,我们可以让多个盒子同时浮动;或者通过定位微调,使他们顶部对齐;2.去掉控件系统自带的边框 :border:none;3.在企业开发中,css中…

    好文分享 2025年12月21日
    000
  • H5中的定位

    这次给大家带来h5中的定位,h5中定位的注意事项有哪些,下面就是实战案例,一起来看一下。 一.定位流分类 1.1相对定位1.2绝对定位1.3固定定位1.4静态定位 二.什么是相对定位? 相对定位就是相对于自己以前在标准流中的位置来移动position: relative; 相对定位注意点 1.相对定…

    好文分享 2025年12月21日
    000
  • HTML5中form表单标签用法详解

    本文主要和大家分享HTML5中form表单标签用法详解,会以代码实例来和大家分享form的用法,希望能帮助到大家。 语法: 结束,表单都必须放在其之间。   2.method 传送方式,  get/post  是后端程序员考虑的问题   3.action  浏览者输入的数据被传送到的地方,比如一个p…

    好文分享 2025年12月21日
    000
  • HTML5 Canvas的交互式地铁线路图实现代码

    地图稍微内容有点多,要全部展示,字显得有点小了,但是没关系,可以按照需求放大缩小,字体和绘制的内容并不会失真,毕竟都是用矢量绘制的~ 界面生成 底层的 p 是通过 ht.graph.GraphView 组件生成的,然后就可以利用 HT for Web 提供好的方法,调用 canvas 画笔随便绘制就…

    2025年12月21日
    000
  • H5中meta标签及作用

    本文主要和大家分享h5中meta标签及作用,希望能帮助到大家。 H5标准声明,使用 HTML5 doctype,不区分大小写 // 标准的 lang 属性写法 // 声明文档使用的字符编码 // 优先使用 IE 最新版本和 Chrome // 页面描述 // 页面关键词 // 网页作者 // 搜索引…

    好文分享 2025年12月21日
    000
  • MUI框架使用HTML5实现二维码扫描功能

    一、简介         Barcode模块管理条码扫描,提供常见的条码(二维码及一维码)的扫描识别功能,可调用设备的摄像头对条码图片扫描进行数据输入。通过plus.barcode可获取条码码管理对象。 二、实现的效果 三、实现 代码 立即学习“前端免费学习笔记(深入)”; #bcid{ width…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信