html5中怎么用canvas绘图

html5中怎么用canvas绘图

日期:2022年6月5日 下午10:37 分类:HTML5前端

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>



点这里获得人工在线支持,快速解决电脑、网络和网站等问题!

为您推荐


使用PowerPoint在Windows11上录屏

Windows 11中屏幕录制的第三种方法是使用PowerPoint,利用该软件也可以轻松完成屏幕录制,用于将录制内容保存到幻灯片放映。下面让我们跳到详细的操作步骤:   步骤1.打开 PowerPoint并在你的计算机上打开一个新文件,然后单击“插入”以选择“屏幕录制”按钮。   步骤2.单击“选择区域”以选择录制区域,然后单击红……

使用易我录屏助手在Windows11上录屏

通过Xbox只能进行一些简单的录制,如果你对录屏有着更高的需求,想要在录制后进行一些编辑,或者是加一些水印等等,你可以使用专业的屏幕录制工具。   易我录助手是一款专业的电脑录屏软件,它不单单适用于Windows电脑,还有专门的Mac版本,所以也是支持苹果电脑的。易我录屏助手可以录制整个屏幕、特定窗口、网络摄……

使用Xbox游戏栏在Windows11上录屏

如果要在电脑上进行一些简单的录制,Xbox游戏栏是一个很好的选项。但它不适用于多个窗口,甚至不适用于桌面,它只适用于一个窗口。以下是在Windows 11中使用Xbox录制屏幕的详细步骤:   步骤1.用户只能通过在后台或谷歌浏览器打开游戏来使用游戏录制工具栏进行录制。首先,通过在电脑的搜索菜单中键入“Xbox 游戏录制……

密码保护:win11 更新错误 0x8024a205 解决方法

导致 0x8024a205 错误的原因有很多种,包括 Windows Update 组件损坏、过时或不兼容的设备驱动程序、网络连接问题等。修复这个错误主要有以下几种方式: 重启电脑 使用 Windows Update 疑难解答 检查网络连接 禁用或者卸载所有防病毒软件 运行系统文件审查(SFC)和部署映像服务和管理(DISM)工具 重置 Windows Update ……

win11更新卡在65%的解决方法

方法一: 1、首先,我们右键下方任务栏,打开“ 任务管理器 ” 2、然后点击上方“ 性能 ”选项卡,看看自己的硬件是否正在正常运行。 3、如果每一项都在运行的话,那么只要耐心等待一段时间应该就可以正常更新了。 4、如果其中有 不在正常运行的硬件 ,那么可能是卡住了, 重启一下电脑 再尝试更新即可解决问题。 方法二: 1……

win11隐藏文件夹方法

1、首先,找到需要隐藏的文件夹; 2、隐藏文件夹空白处,按住【shift】键,再点击【右键】,打开的右键菜单项中,选择【在此处打开 Powershell 窗口(S)】; 3、输入【attrib +s +h 需要隐藏的文件夹名称 】命令,再按键盘的【Enter回车键】可以隐藏文件夹; 4、如果需要再次显示文件夹,输入【attrib +s -h 需要隐藏的……

版权声明:

fm0898.com小部分文章引用或者参考了网络上传播的部分开源开放代码,我站采用的这部分代码仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请 联系我们并出示版权证明以便删除 !

请站长吃包辣条更有动力写作哦!

2023年一月
« 12月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031