学习canvas
canvas简介
<canvas>
是 HTML5
新增的,一个可以使用脚本(通常为JavaScript
)在其中绘制图像的 HTML
元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处理和渲染。
它最初由苹果内部使用自己MacOS X WebKit
推出,供应用程序使用像仪表盘的构件和 Safari
浏览器使用。 后来,有人通过Gecko
内核的浏览器 (尤其是Mozilla
和Firefox
),Opera
和Chrome
和超文本网络应用技术工作组建议为下一代的网络技术使用该元素。
Canvas
是由HTML
代码配合高度和宽度属性而定义出的可绘制区域。JavaScript
代码可以访问该区域,类似于其他通用的二维API
,通过一套完整的绘图函数来动态生成图形。
Mozilla 程序从 Gecko 1.8 (Firefox 1.5)开始支持 <canvas>
, Internet Explorer 从IE9开始<canvas>
。Chrome和Opera 9+ 也支持 <canvas>
。
<canvas>
看起来和<img>
标签一样,只是 <canvas>
只有两个可选的属性 width、heigth
属性,而没有 src、alt
属性。
如果不给<canvas>
设置widht、height
属性时,则默认 width
为300、height
为150,单位都是px
。也可以使用css
属性来设置宽高,但是如宽高属性和初始比例不一致,他会出现扭曲。所以,建议永远不要使用css
属性来设置<canvas>
的宽高。
支持<canvas>
的浏览器会只渲染<canvas>
标签,而忽略其中的替代内容。不支持 <canvas>
的浏览器则 会直接渲染替代内容。
双圆demo
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <meta name= "viewport" content= "width=device-width, initial-scale=1.0" > <meta http-equiv= "X-UA-Compatible" content= "ie=edge" > <title>Document</title> <style> *{ margin: 0;padding: 0; } .box{ text-align: center; } #myCanvas{ background: #eee; } </style> </head> <body> <div class = "box" > <canvas id= "myCanvas" height= "400" width= "400" ></canvas> </div> <script type= "text/javascript" > var c=document.getElementById( "myCanvas" ); var cxt=c.getContext( "2d" ); cxt.fillStyle= "green" ; cxt.beginPath(); cxt.arc(200,200,190,0,Math.PI, false ); cxt.closePath(); cxt.fill(); cxt.fillStyle= "#fff" ; cxt.strokeStyle= 'red' cxt.beginPath(); cxt.arc(200,200,180,0,Math.PI*2, true ); cxt.closePath(); cxt.stroke(); cxt.fill(); </script> </body> </html> |
1、dom.getContext('2d')
2、fillStyle 填充颜色
lineWidth 线条宽度 cxt.lineWidth='10'
3、strokeStyle 线条颜色
4、beginPath() 开始一条路径,或重置当前的路径
closePath()从当前点到开始点的路径
5、fill填充当前绘图(路径)、stroke绘制已定义的路径
6、arc(x,y,r,sAngle,eAngle,counterclockwise);画圆
参数 | 描述 |
---|---|
x | 圆的中心的 x 坐标。 |
y | 圆的中心的 y 坐标。 |
r | 圆的半径。 |
sAngle | 起始角,以弧度计。(弧的圆形的三点钟位置是 0 度)。 |
eAngle | 结束角,以弧度计。 |
counterclockwise | 可选。规定应该逆时针还是顺时针绘图。False = 顺时针,true = 逆时针。 |
7、moveTo(x,y) 定义线条开始坐标
lineTo(x,y) 定义线条结束坐标
1 2 3 4 5 | var c=document.getElementById( "myCanvas" ); var ctx=c.getContext( "2d" ); ctx.moveTo(0,0); ctx.lineTo(200,100); ctx.stroke(); |
8、fillRect(x,y,width,height); X、Y为坐标,左上角
fillRect() 方法绘制“已填色”的矩形。默认的填充颜色是黑色。
提示:请使用fillStyle属性来设置用于填充绘图的颜色、渐变或模式。
strokeRect 绘制无填充的矩形.
10、clearRect(x,y,width,height);清除矩形9、rect(x,y,width,height);
参考网址:http://www.w3school.com.cn/tags/html_ref_canvas.asp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通