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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**