js学习之canvas的基础与应用(二)

本文介绍了CanvasAPI的关键技术,如裁剪、合成操作、图片绘制、数据导出、像素处理和高分屏优化。作者以动态画圆为例,分享了实用技巧,并提到为Android工程师准备的《2024年Web前端开发全套学习资料》资源。
摘要由CSDN通过智能技术生成

4.裁剪  ctx.clip() 裁剪当前路径外的区域,裁剪之后当前路径之外的区域就不能够绘制  可以通过save()和restore()恢复

5.合成 ctx.globalCompositeOperation = ‘source-over’  新元素与旧元素之间的合并方式,有十一种常用   source-over(默认)  destination-over copy

6.绘制图片  ctx.drawImage();  第一个参数img(image,video,canvas)  里面传入的参数有三种  当为三个参数时(x,y) x,y表示起始坐标点的位置   为五个参数时(x,y,dx,dy) 起始点的坐标以及图片区域的长度与宽度  九个参数时(x,y,dx,dy,x1,y1,w2,h2) 前四个参数为所绘制目标元素的起始点和宽度  后四个参数为canvas绘制的起始点的大小

7.将canvas内容导出   canvas.toDataUrl()  注意此方法是canvas自身的方法不是上下文对象  将canvas的内容抽成一张图片,base64编码,注意同源策略的限制 将canvas的内容放在img元素内部

8.获取canvas像素信息  ctx.getImageData(x,y,dx,dy)    同源策略 将所选区域的内容以base64编码展现  ctx.createImageData(x,y)创建新的空白页ImageData对象      ctx.putImageData(imaData,x,y)将图像数据放再画布上

9. 命中检测   ctx.inPointPath(x,y) 检测是否在区域内 如果该点在则返回true不在就返回false    ctx.inPointInStroke() 检测是否在线上   如果该点在则返回true不在就返回false    还可以通过检测当前点的像素值,如果为透明,则该点不在路径上

10.非零绕树准则   判断点P是否在多边形内,从点p向外做一条射线(可以是任意方向),多边形的边从左往右经过射线时环数减一从右往左时环数加一,最后环数不为0则表示在该区域内部

11.解决canvas高分屏模糊问题     因为canvas绘制的是位图,所以会导致模糊,解决方法是根据屏幕分辨率修改canvas样式代码中的宽和高与canvas的width和height属性的比列。
下面就用上面所学到的基础知识来一个实际例子吧,这里呢我们需要实现的就是在画布上动态的画圆,并且实时的反映出所画的圆所画出的比例。

上面就是实现的代码实例,简单做一下说明吧,首先是我们需要一个封装画扇形的方法,最后在定时器中不断的增加画的弧度,一次从视觉上给人一种动态上画圆的过程,百分比的设置更加的简单,只需要通过简单的数学方法进行计算即可。以上就是所有的关于canvas的内容。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值