大佬们,这种切割加拼图的功能该怎么实现啊
类似这种:[https://www.jigsawexplorer.com/online-jigsaw-puzzle-player.html?puzzle_id=christmas-peace]
图片该怎么按照拼图图块的形状切割?然后两个图块组合后是怎么变成一体的?
fabricjs 能满足要求吗?求推荐下,能实现这类需求,简单好用的 canvas 库……
我只做过些 h5 小程序这类的,完全没有 canvas 经验……
类似这种:[https://www.jigsawexplorer.com/online-jigsaw-puzzle-player.html?puzzle_id=christmas-peace]
图片该怎么按照拼图图块的形状切割?然后两个图块组合后是怎么变成一体的?
fabricjs 能满足要求吗?求推荐下,能实现这类需求,简单好用的 canvas 库……
我只做过些 h5 小程序这类的,完全没有 canvas 经验……
参考链接:
https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Compositing
https://stackoverflow.com/a/18387192/2244973
如果每一片形状的数量是有限的,或者形状是无规律的:
1. drawImage 画 mask(即描述形状的图片)
2. globalCompositeOperation = ‘source-in’; 设置为只允许画在 mask 上
3. drawImage 画图片本体
注意调整画图的 src 位置和 dest 位置
如果每一片形状的数量是非常多且有规律的:
1. 画一个 path,作为形状
2. context.clip(); 设置为只能在范围内画
3. context.drawImage 画图片本体
## 变成一体
这个没什么特别的吧,判断组合然后依次画上去就行了
在松鼠标的时候,判断一下原图中周围的块是不是真的在旁边,如果在就用并查集连在一起。再拖动的时候,这个集合的块全部一起移动,松开的时候,全部判断新的组合
不知道说清楚没有,感觉重点在图片的切分,和是否拼好的判断这
你要是要用 canvs 可以用 konva,他有幕布和组的概念。拼好的放到一个组就行了,这个其实你也可以自己做的
ps: canvas 想要玩的好,线性代数跑不了