2024年前端最全一文 get 入门 canvas 的**路径(1),2024年最新详解前端架构进阶面试题

2024年前端最全一文 get 入门 canvas 的**路径(1),2024年最新详解前端架构进阶面试题最后 推荐一些系统学习的途径和方法 每个 Web 开发人员必备 很权威很齐全的 Web 开发文档 作为学习辞典使用 可以查询到每个概念 方法 属性的详细解释 注意使用英文关键字搜索 里面的一些 HTML CSS HTTP 技术教程也相当不错 开源分享 大厂前端面试题解析

大家好,我是讯享网,很高兴认识大家。

最后

推荐一些系统学习的途径和方法。

路线图

每个Web开发人员必备,很权威很齐全的Web开发文档。作为学习辞典使用,可以查询到每个概念、方法、属性的详细解释,注意使用英文关键字搜索。里面的一些 HTML,CSS,HTTP 技术教程也相当不错。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

HTML 和 CSS:

html5知识

css基础知识

笔式绘图仪模型

绘制一个三角形例子:

var ctx = canvas.getContext(“2d”);

ctx.beginPath(); //开始路径

ctx.moveTo(75, 50); //指定起始位置

ctx.lineTo(100, 75); //绘制到这个位置的一条线

ctx.lineTo(100, 25); //绘制到这个位置的一条线

ctx.fill(); //填充图形,默认就制动结束路径了

在这个过程中,有一个比较有用的函数,moveTo,这个函数实际上画不出来任何东西,它是属于上面描述的路径列表的一部分。

看下这个函数的作用:

moveTo()

将笔触移动到指定的坐标 x 以及 y 上。

当 canvas 初始化或者 beginPath()调用后,你通常会使用 moveTo()函数设置起点。我们也能够使用 moveTo()绘制一些不连续的路径。

这个时候你可以想象一下在纸上画东西,笔尖从一个点到另一个点的移动过程。这个过程的模式叫做笔式绘图仪模式。所以 canvas 2d 绘图的模式也就是这种模式。

现在绘制多边形就没有什么问题了。

canvas 上找出指定的图形


首先,完成描述一下这个问题:按下鼠标,如何判断出选中了某一个图形?

比如下图:

鼠标点击了这个不规则多边形的内部,怎么判断?

第一反应就是 isPointInPath,或者是迭代所有图形,拿鼠标的点去与图形的点碰撞检测,这个方法可以用,但是适用场景比较少,还有就是性能开销比较大,如果图形太多,每一个都需要经过计算,那么这个交互会变得非常的不友好。

有没有其他方案了,在游戏界有一个普遍使用的方案——包围盒,什么是包围盒呢?我们以上面的图形举例,外面画的红线框就是这个多边形的包围盒。

很形象的一个例,就是公司发的月饼盒子,就是里面圆圆的月饼 ??? 的包围盒。

包围盒的方案有个缺点,选取的范围比较粗。比如上图的红框,框选了不是多边形部分的内容。如果你想用包围盒的方案来做,那就要分的足够细,比如下图:

分出来了多个包围盒,这种情况在图形特别复杂的时候,包围盒这个方案就有点粗糙了。

还有下图这种,实心和空心圆,用包围盒也就非常的不友好。

那怎么办?

方案

如果想要快速选中某一个图形,我们能不能对我们的每一个图形有一个对应的 hash,而在鼠标点击的时候,又能够取到这个 hash。用 hash 的值,去找这个图形,这个过程的时间复杂度是 O(1)。

比如在画布的这些图形:

在另一张一模一样的画布上,画了这些图形

上层画布(显示出来的)是正常的图形,但是每个图形分配一个 rgb 色值。

下层画布(隐藏)用这个 rgb 色值做填充或者 stroke。

当鼠标点击的时候,在隐藏画布相同的位置,取一个像素点。

而这个像素点的rgb值就是我们要找的 hash。

至此,两个问题已经解答了。

近期,我发现我的前端群里有不少人开始研究前端图形学方向,前端图形学和前端架构师是现在前端两大重点方向,而前端图形学就是一个很独特的前端方向,要求的技能跟其他方向都不一样,动画、数据可视化、游戏都是它的领域。市场有很大的需求,在各大招聘网站也可以看出来薪资非常高,而当前市场人才紧缺。

之前京程一灯推出了业内唯一的前端图形学教程(第一季),由浅入深,从基础数学知识开始,涉及2D和3D的方方面面,帮助大家快速掌握图形学的关键知识点和编程技巧。

基础学习:

前端最基础的就是 HTML , CSS 和 JavaScript 。

网页设计:HTML和CSS基础知识的学习

HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

CSS样式是表现。就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。

动态交互:JavaScript基础的学习

JavaScript是用来实现网页上的特效效果。如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是用JavaScript来实现的。

-01)]

动态交互:JavaScript基础的学习

JavaScript是用来实现网页上的特效效果。如:鼠标滑过弹出下拉菜单。或鼠标滑过表格的背景颜色改变。还有焦点新闻(新闻图片)的轮换。可以这么理解,有动画的,有交互的一般都是用JavaScript来实现的。

[外链图片转存中…(img-grDT3PUv-02)]

小讯
上一篇 2025-01-06 09:50
下一篇 2025-02-21 16:10

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/28094.html