html5中怎么用canvas绘图
html5中怎么用canvas绘图
1)创建画布
在HTML代码的body中,使用<canvas>标签创建画布元素。创建时,要为该元素定义id属性,因为Javascript需要根据该id来获取画布元素。
画布的默认宽度为300px,高度为150px,可以通过<canvas>元素的width属性自定义其宽度,height属性自定义其高度。代码如下:
<canvas id="canvas" width="300" height="300"></canvas>
上述代码,在页面中创建了一个画布,其id为"canvas",宽度为300px,高为300px。
说明:
1、默认情况下,画布本身没有任何外观,只是一块透明区域,什么也看不见,可以通过CSS来控制,让其可见。跟其它HTML元素一样,也可以通过CSS来定义canvas元素的尺寸、增加边框、设置内边距、外边距等。并且,CSS属性的继承规则也同样适用,如在canvas内添加的文字,默认会继承canvas元素本身的字体属性。
需要特别注意的是,画布的尺寸和CSS定义的尺寸是完全不同的概念。画布的尺寸是由画布元素的width和height属性定义的,而CSS中定义的尺寸是画布元素在页面中显示的尺寸。如果两者定义的尺寸不相同,则画布上的像素会自动缩放,以适合CSS中定义的尺寸。另外,画布中的坐标,也是根据画布的width和height属性定义的。
2、画布的尺寸一旦定义,就不能修改,除非重置画布。重置画布的width属性或height属性,都会清空整个画布,擦除当前路径,并重置所有的图形属性到初始状态。
3、由于<canvas>是HTML5中新增的元素,一些老浏览器(如IE8及以下版本)不支持<canvas>元素。可以在<canvas>元素内部提供替代图片、或文本说明,为访问者提供友好的提示信息。如:
<canvas id="canvas" width="300" height="300">您的浏览器不支持canvas。</canvas>
2)获取绘制上下文
现在画布已经有了,要在画布上绘制图形,还需要一只画笔。获取画笔的方法如下:
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
由于画笔是属于画布的,所以先要调用getElementById()方法获得画布的访问权。然后,调用画布对象的getContext()方法来获取画笔,这里的字符串参数"2d",用来定义画笔的种类,"2d"表示绘制二维图形的画笔。当然,还会有"3d",但目前还不支持。
画笔在Canvas 中被称作“绘制上下文”,Canvas API基本上都是定义在“绘制上下文”对象上,而非<canvas>元素上。
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轴,并向下增长。
画布上每一个点的坐标都直接映射到一个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()方法,否则,该路径不会被绘制,该路径所定义的图形不会显示在画布中。
至此,在画布中绘制图形的过程就全部完成了,图形已经真正绘制到画布上了。当然,在实际应用中,最好将这些绘制过程封装在一个函数中,并在页面加载完成后,再调用绘制函数来绘制图形。本实例的完整代码如下:
<canvas id="canvas" width="300" height="300"></canvas>
<script src="jquery.js"></script>
<script>
$(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();
}
</script>
点这里获得人工在线支持,快速解决电脑、网络和网站等问题!
为您推荐
北京精雕软件 雕塑冲压,磨光,都看不见范围红圈了
雕塑冲压,磨光,都看不见范围红圈了,这个原因是精雕软件太老了,对独立显卡驱动不好友造成的,也就是显卡驱动不兼容! 解决方法,直接把独显禁用,精雕就正常了。
win10个性化背景图删除方法
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers 打开注册表,找到上面值里删除即可。
win11跳过联网激活方法
首次开机进入设置页面 ① 按 Shift+F10键,打开命令行程序(部分笔记本选按 Fn+shift+F10); ② 进命令行输入: oobe\bypassnro 然后敲击回车 (如果无法输入文字,需要鼠标点下窗口,才能输入!); ③ 电脑自动重启,再次进入联网界面,下面多出了“ 我没有Internet连接”选项,此时点击此选项,可继续进行后续设置。
win11添加共享打印机的时报0x000006ba错误解决方法
win11添加共享打印机的时候遇到0x000006ba错误怎么解决 运行 services.msc命令,注意这里的英文单词是services,结尾带s的。然后在弹出的服务列表里查看Print Spooler服务,这是有关打印机的服务。 点选Print Spooler服务,双击鼠标左键,在弹出的界面里,查看服务状态,出问题时,服务状态为已停止……
Win11推送KB5016691预览更新修复打印机BUG
微软为Win11推送了KB2016691预览版更新,在此次更新中,微软又一次修复了多个与打印机相关的Bug。 在安装补丁后,重新启动或安装打印机不再会出现故障;从Internet打印协议类驱动程序切换到独立硬件驱动程序后,也不再会进入错误模式;同时,此前阻止访问设备功能的双向通信问题也获得了解决。 除了打印机……
Win11打印机共享时提示709错误解决方法
方法一:卸载补丁 Win10 卸载有问题的补丁KB5006667或KB5006670;win11回退回退到旧版本。 方法二:文件替换 把系统win32spl.dll文件替换为就版本的即可。批处理文件见附件,找到对应的系统,右键以管理员身份运行就可以了。 方法三:不用卸载补丁方法 新建记事本文档,输入如下内容……
版权声明:
fm0898.com小部分文章引用或者参考了网络上传播的部分开源开放代码,我站采用的这部分代码仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请 联系我们并出示版权证明以便删除 !
请站长吃包辣条更有动力写作哦!
分类目录
标签
近期文章
一 | 二 | 三 | 四 | 五 | 六 | 日 |
---|---|---|---|---|---|---|
« 9月 | ||||||
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |