Canvas[详解] |
您所在的位置:网站首页 › 简单的图形组合画 › Canvas[详解] |
文章目录
前言一、Canvas是什么?二、使用方法:1.先得到画布对象2.画图流程1.绘画路线2.设置画笔
三、快速绘制常见图形1.快速绘制矩形:2.快速绘制圆形:3.贝塞尔曲线
四、在画布绘制文字1. 填充绘制2. 描边绘制3. 字体样式设置
五、图形组合六、图形阴影七、图形的绘制八、图片平铺九、画布裁剪十、画布变形十一、画布存档十二、清除画布
前言
Canvas是一种HTML元素,用于动态生成图形、动画和其他视觉效果。Canvas提供了一组API,使开发者可以使用JavaScript绘制各种图形,如矩形、圆形、线条和图片等,同时还可以进行动画、交互和数据可视化等操作。 Canvas的工作原理是在HTML页面中创建一个空白的画布,然后使用JavaScript代码将图形和其他元素绘制到画布上。 Canvas具有高度的灵活性和可扩展性,可以用于创建游戏、图表、数据可视化和各种交互式应用程序等。 二、使用方法: 1.先得到画布对象 var can = document.querySelector("#can"); var ctx = can.getContext('2d'); 2.画图流程 1.绘画路线 开始绘画 ctx.beginPath() 确定要绘制的起点 ctx.moveTo(x,y) 确定经过点... ctx.lineTo(x,y); 确定要绘制的终点 ctx.lineTo(x,y); 路径绘制结束 ctx.closePath(); (关闭路径,将终点与起点链接起来) 2.设置画笔确定画笔的样式,使用设置好的画笔描边或者填色 ctx.fillStyle = "red" //确定填充的颜色,默认值是黑色 ctx.fill(); //开始填充 ctx.lineWidth = 8;//确定描边宽度 ctx.strokeStyle = 'blue';//描边颜色 ctx.stroke();//开始描边 三、快速绘制常见图形 1.快速绘制矩形: ctx.rect(x,y,w,h) // 确定路径 x,y 起始坐标 w,h 宽高 ctx.strokeRect(x,y,w,h); // 确定路径并描出来 ctx.fillRect(x,y,w,h); // 确定路径并填充出来 2.快速绘制圆形: ctx.arc(x,y,r,sa,ea,true/false): x、y为圆心坐标,r为半径, sa、ea分别为起始角度和结束角度, true是逆时针画圆,false是顺时针画圆; 角度计算公式: 360度角即2PI弧度; 1度就是2PI/360=PI/180弧度; 90度就是2PI/360*90=PI/2弧度(其他的角度自行计算) 3.贝塞尔曲线开始点通过moveTo去做 二次贝塞尔曲线 ctx.quadraticCurveTo (cx,cy,ex,ey) cx,cy 控制点坐标 ex,ey 结束点坐标示例: #can{ background-color: rgb(235, 239, 243); } var can=document.querySelector('#can') var ctx=can.getContext('2d') ctx.beginPath();//开始绘图 ctx.moveTo(10,10);//开始点 ctx.quadraticCurveTo (100,150,150,10);//控制点和结束点 ctx.stroke();//把路线描绘出来成品: 三次贝塞尔曲线 bezierCurveTo (cx1,cy1,cx2,cy2,ex,ey);示例: #can{ background-color: #eee; } var can = document.querySelector('#can') var ctx = can.getContext('2d'); ctx.beginPath();//开始绘图 ctx.moveTo(250,50);//开始点 ctx.bezierCurveTo(450,125,50,275,250,350);//控制点和结束点 ctx.stroke();//把路线描绘出来成品: 示例: #can{ background-color: #eee; } var can = document.querySelector('#can') var ctx = can.getContext("2d"); ctx.beginPath(); ctx.arc(100,100,50,0,2*Math.PI,false); ctx.fillStyle="teal" ctx.shadowColor = "red";//阴影颜色 ctx.shadowBlur = 15;//阴影模糊度 ctx.shadowOffsetX = 10;//阴影X轴距离 ctx.shadowOffsetY = 10;//阴影Y轴距离 ctx.fill();效果: 示例代码: #can{ background-color: #eee; } var can = document.querySelector('#can') var ctx = can.getContext("2d"); ctx.beginPath(); // 先把图片对象创建出来 var image = new Image(); image.src = '../img/6.jpg'; image.onload = function(){ ctx.drawImage(image,150,180,100,100,50,50,100,100); }效果: ctx.createPattern(图片对象,“平铺方式”); 平铺方式: repeat 完全平铺、 repeat-x/y 、 no-repeat; 示例代码: #can{ background-color: #eee; } var can = document.querySelector('#can') var ctx = can.getContext("2d"); ctx.beginPath(); // 先把图片对象创建出来 var image = new Image(); image.src = '../img/3.png'; image.onload = function(){ var pat = ctx.createPattern(image,"repeat-x"); ctx.fillStyle = pat; ctx.fillRect(50,50,200,100); } 九、画布裁剪ctx.drawImage(图片对象,x,y);//x,y图片开始裁剪位置坐标 示例代码: #can{ background-color: #eee; } var can = document.querySelector('#can') var ctx = can.getContext("2d"); ctx.beginPath(); ctx.rect(100,100,200,200); ctx.clip(); // 先把图片对象创建出来 var image = new Image(); image.src = '../img/1.jpg'; image.onload = function(){ ctx.drawImage(image,0,0) } 十、画布变形 scale(w,h) 画布缩放 w宽度上的缩放 h高度上的缩放rotate(度数) 画布旋转 1度就是 Math.PI/180 旋转的中心点事画布的左上角,正度数是顺时针旋转translate(x,y) 画布中心点偏移(原来的中心点:0 0) x y 新的中心点坐标 十一、画布存档 save() 保存当前的画布状态restore() 回退到上一次保存的状态 十二、清除画布ctx.clearRect(x,y,w,h); 清除整个画布: ctx.clearRect(0,0,标签.width,标签.height); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |