文章插图
- MDN:Canvas 教程
<canvas width="400" height="400"></canvas>
getContext(contextType)获取用于绘制的渲染上下文,contextType: "2d":CanvasRenderingContext2D 二维渲染上下文 "webgl": WebGLRenderingContext 三维渲染上下文,OpenGL ES 2.0 "webgl2":WebGL2RenderingContext 三维渲染上下文,OpenGL ES 3.0CanvasRenderingContext2DfillStyle填充(内部)颜色 ctx.fillStyle='rgba(250,0,0,0.6)'
strokeStyle画笔(边框)颜色 ctx.strokeStyle='red'
,同上,支持color、渐变色画刷、图片画刷font字体设置 ctx.font = "bold 48px serif"
lineWidth线宽 ctx.lineWidth = 15;
toDataURL(type, quality)可以将canvas绘制的图形转换为Data URI 格式的图像,从而导出为位图文件基础图形绘制fillRect(x, y, width, height)填充一个矩形strokeRect(x, y, width, height)绘制一个矩形框clearRect(x, y, width, height)清除指定区域的的像素fillText(text, x, y, [maxWidth])填充文本strokeText(text, x, y [, maxWidth])绘制文本(轮廓)drawImage()绘制位图路径绘制①创建路径 >** ②创建路径> ③**渲染路径beginPath()开始一个新的路径,清除已有路径列表closePath()闭合一个路径moveTo(x, y)移动画笔到坐标x、ylineTo(x, y)画线到坐标x、yellipse(x, y, radiusX, radiusY,r,sa,ea)椭圆路径 ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle)
rect(x, y, width, height)矩形路径arc(x, y, radius, startAngle, endAngle)绘制圆弧路径quadraticCurveTo(cp1x, cp1y, x, y)二次贝塞尔曲线fill([path], [fillRule])填充当前、已存在的路径stroke([path])描边子路径Path2D可以单独申明一个路径对象,支持上面的绘制,还支持SVG的path数据 。<canvas id="canvas" width="400" height="400"></canvas><script> ctx = document.getElementById('canvas').getContext('2d'); // ctx.alpha = false; ctx.fillStyle = 'rgba(250,0,0,0.6)'; ctx.fillRect(10, 10, 40, 40); ctx.fillRect(30, 30, 40, 40); ctx.strokeStyle = 'red'; ctx.lineWidth = 3; ctx.strokeRect(90, 10, 150, 50); ctx.fillStyle = 'rgba(0,0,250,0.5)'; ctx.font = '20px 微软雅黑'; ctx.fillText("文本Text", 120, 40) //path ctx.beginPath(); ctx.moveTo(90, 80); ctx.lineTo(90, 200); ctx.lineTo(190, 200); ctx.closePath(); ctx.arc(120, 120, 50, 0, 360); ctx.fill();</script>
文章插图
- 二次贝塞尔曲线调试器
- 三次贝塞尔曲线调试器
弧度 = ( Math.PI / 180 ) * 角度,360度的弧度= Math.PI*22.2、动画Canvas的动画就是不停的重绘,其实任何动画都是这样,前端实现动画有以下几种姿势:
- setInterval(function, delay):定时重绘,适合不需要交互的场景 。
- setTimeout(function, delay):定时重绘,适合通过键盘或者鼠标事件来捕捉用户的交互,再用
setTimeout
执行相应的动作 。 - requestAnimationFrame(callback):动画专用API,这个方法更加平缓并更加有效率,当系统准备好了重绘条件的时候,才调用绘制动画帧 。
- 前端开发日常——CSS动画无限轮播
- 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件
- MFC-创建MFC图形界面dll
- Element 前端枚举enum的应用封装
- 基于纯前端类Excel表格控件实现在线损益表应用
- 15 基于SqlSugar的开发框架循序渐进介绍-- 整合代码生成工具进行前端界面的生成
- Java一次返回中国所有省市区三级树形级联+前端vue展示【200ms内】
- .NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现
- Flask 框架:运用Echarts绘制图形
- 前端程序员学习 Golang gin 框架实战笔记之一开始玩 gin