所有分类
  • 所有分类
  • 后端开发
canvas 网格(grid)与坐标空间(coordinate space)详解

canvas 网格(grid)与坐标空间(coordinate space)详解

还好,有一组路径绘制函数让我们可以绘制相当复杂的形状。我们首先看看矩形吧,有三个函数用于绘制矩形的:,子路径组都会被重置,然后可以绘制新的图形。stroke是绘制图形的边框,fill会用填充出一个实心图形。画一个简单图形(如三角形)的代码如

关于Canvas中的小秘密你知多少?比如说有网格和坐标空间这种东西,我们还能用它画出各种形状来。别看Canvas只能画矩形,但是用路径把他们拼在一起,就能画出各种各样的图形!快来和我一起揭开Canvas的神秘面纱!

canvas 网格(grid)与坐标空间(coordinate space)详解

Canvas的网格和坐标空间

你看,在Canvas里边,画布就是个格子图,我们从上往下数,左往右看,起点就定在那,也就是(0,0)那个地方。每个格子里的小点点都有它专属的坐标,这好比玩拼图,知道了这些就能拼出好看的图和位置!所以咱们得先搞清楚这个坐标系统哟~

Canvas这东西看着抽象,但用着真的棒呆了!你就当它是一块画布,随便你怎么折腾,任意调整大小,翻转、缩放想咋整都行。专门为搞复杂图形的宝宝们量身定做滴!

绘制矩形的三个函数

fillRect(x,y,width,height) : Draws a filled rectangle
strokeRect(x,y,width,height) : Draws a rectangular outline
clearRect(x,y,width,height) : Clears the specified area and makes it fully transparent

Canvas给咱们提供了三种画矩形的技巧:fillRect、strokeRect和clearRect。这些小工具基本上只需要四个参数就能搞定:x和y是矩形的起点坐标,width和height是它的长和宽。操作起来就跟喝口水似的容易!

function draw(){
  var canvas = document.getElementById('tutorial');
  if (canvas.getContext){
    var ctx = canvas.getContext('2d');
    ctx.fillRect(25,25,100,100);
    ctx.clearRect(45,45,60,60);
    ctx.strokeRect(50,50,50,50);
  }
}

填充矩形就是画出全色矩形;添加描边就是画出带线框的矩形;擦除区域,这个棒极了,尤其在制作动画或更换图片时非常实用。运用好这些方法,你就可以轻松地创造出炫酷无比的图形!

canvas 网格(grid)与坐标空间(coordinate space)详解

路径绘制的基本步骤

画路径有点费劲,需要好几步搞定。首先得用beginPath这东西开个新的路径通道;然后用moveTo把起点给定好;接下来就可以用lineTo啊或者arc那些方法来添加子路径了。

beginPath()
closePath()
stroke()
fill()

画路径关键就在于把这些小路径巧妙拼接起来。试试用closePath把路径封口,或者用stroke和fill为路径加上框框或填上色彩。搞定这几招,画路径你也可以了!

moveTo方法的重要性

说到底画路径,就必须得掌握moveTo哟这神奇的函数!有了它,你不仅可以设定起点,还能用它画出连续不断的路径~比如画个笑脸,只需要找到合适的位置,然后用moveTo画个弧线就好。

用起来超方便的moveTo方法,能让你随便控制路径起点和终点,复杂图案也能轻松搞定。就是因为这种强大的自由度,Canvas变成了制作创意图形的神器!

arc方法的参数和用法

这arc函数就牛逼了!只需要你告诉它五件事儿,就能画出各种样式、规格的圆环或弧形:首先得标明圆心在啥地方,也就是x和y轴上的数字;然后再说下圆的长度;再然后是开始和结束的角度,简单说来就是起点在哪,终点又在哪;最后就是一个开关,用来控制是顺时针画还是逆时针画。调整好这些参数,你想要的弧线就出来了!

弧形图标、进度条啥的,或者那种花里胡哨的图形都能用到ARC。学好这几个参数,做图就快多了。

路径的闭合与填充

ctx.beginPath();
ctx.moveTo(75,50);
ctx.lineTo(100,75);
ctx.lineTo(100,25);
ctx.fill();

别忘了闭合路径~试试用closePath或是fill法来结束路径,真的不用你亲手去画那个圆圈了呀。这样填充颜色才会更轻松容易!

学会用路径闭合和填充,就能画出更生动、更有立体感的图。这个话题对canvas相当关键!

复杂的图形绘制实践

只要摸透几种画画方法,你也能画出超炫的作品来!像那种只用几条弧线加直线就可以画出各种漂亮图案的技巧;或者是通过巧妙组合各种形状,就可以制造出极具动感的图标。

canvas 网格(grid)与坐标空间(coordinate space)详解

实践出真知!试试看犯点小错误、调整下技术高度,画出的东西自然就变酷炫,更能引人注目哟。

Canvas在现代网页设计中的应用

ctx.beginPath();
ctx.arc(75,75,50,0,Math.PI*2,true); // Outer circle
ctx.moveTo(110,75);
ctx.arc(75,75,35,0,Math.PI,false);   // Mouth (clockwise)
ctx.moveTo(65,65);
ctx.arc(60,65,5,0,Math.PI*2,true);  // Left eye
ctx.moveTo(95,65);
ctx.arc(90,65,5,0,Math.PI*2,true);  // Right eye
ctx.stroke();
            
ctx.beginPath();
ctx.moveTo(40,75);
ctx.lineTo(60,65);
ctx.lineTo(90,65);
ctx.moveTo(110,75);
ctx.lineTo(125,75);
ctx.stroke();

Canvas不止是用来画画的,用好了它还可以在网页设计中发挥大作用!不论是你想要制作让人眼前一亮的互动图表,或是逼真的动态背景,亦或者是酷炫至极的动画效果,Canvas都能助你实现,激发你无限的创意思维。

Canvas画图超赞!学好了你网站访问量就能飙升,交互性强了,立即会抓住大家眼球,还提升用户感受喔。

总结与展望

// 填充三角形
ctx.beginPath();
ctx.moveTo(25,25);
ctx.lineTo(105,25);
ctx.lineTo(25,105);
ctx.fill();
// 勾边三角形
ctx.beginPath();
ctx.moveTo(125,125);
ctx.lineTo(125,45);
ctx.lineTo(45,125);
ctx.closePath();
ctx.stroke();

阅读完毕后,觉得Canvas的网格和坐标系统是不是已经摸得七七八八?它可是能帮我们画出各种图形的好帮手。关键是,Canvas除了好用的绘画工具外,还支持随心所欲地调坐标系,想画啥就能画啥!

你们有没有想过未来Canvas会变成什么样?评论区留下你们的观点,别忘了点赞支持下我,让更多人也都见识到Canvas的强大头衔!

arc(x, y, radius, startAngle, endAngle, anticlockwise)

原文链接:https://www.icz.com/technicalinformation/web/vue2/2024/06/18523.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?