刚刚看完白板部分的代码,需求就想把拖了好长时间的需求交给我。
场景:直播课上需要橡皮,老师在这边擦掉线,另一边需要实时同步。线条的记录是用坐标点+size+颜色存储在数据库+redis,实时的条件下都是直接在redis的链表下存储,rpush每次的笔画,blpop,未读的所有未读的笔画。(目前用的轮询,我还有一个大任务就是用Go实现WebSocket方案)
事现方案一,直接将橡皮擦比作白色的画笔,覆盖上去就好
问题是背景下还有PPT为背景,覆盖上就会把PPT给挡住,所以这个方案我不能使用
事现方案二,因为白板的是canvas实现的,所以想事现类似于透明画笔的效果,就是笔画过后之后,颜色就透明消失掉。
首先查了一下canvas有clip函数,接下来就是和画笔一样,在本地清除笔画,然后记录像素点集合,作为数据发给后台,后台将像素点和笔画一样存在redis,然后发给另一端,另一端读到关键字,根据像素点擦除原有的笔画,就和透明画笔是一样哒。
这里是本地橡皮擦是事现https://www.cnblogs.com/axes/p/3850309.html