前端使用 Konva 实现可视化设计器(16)- 旋转对齐、触摸板操作的优化
1.前端使用 Konva 实现可视化设计器(2)- 参考线、svg、gif图片加载2.前端使用 Konva 实现可视化设计器(1)- 无限画布、比例尺3.前端使用 Konva 实现可视化设计器(4)- 快捷键移动元素4.前端使用 Konva 实现可视化设计器(3)- 单选、多选、选择框5.前端使用 Konva 实现可视化设计器(5)- 磁贴效果6.前端使用 Konva 实现可视化设计器(6)- 复制粘贴、删除、位置、zIndex调整7.前端使用 Konva 实现可视化设计器(7)- 导入导出、上一步、下一步8.前端使用 Konva 实现可视化设计器(8)- 预览框9.前端使用 Konva 实现可视化设计器(9)- 另存为SVG10.前端使用 Konva 实现可视化设计器(10)- 对齐线11.前端使用 Konva 实现可视化设计器(11)- 对齐效果12.前端使用 Konva 实现可视化设计器(12)- 连接线 - 直线13.前端使用 Konva 实现可视化设计器(13)- 折线 - 最优路径应用【思路篇】14.前端使用 Konva 实现可视化设计器(14)- 折线 - 最优路径应用【代码篇】15.前端使用 Konva 实现可视化设计器(15)- 自定义连接点、连接优化
16.前端使用 Konva 实现可视化设计器(16)- 旋转对齐、触摸板操作的优化
17.前端使用 Konva 实现可视化设计器(17)- 素材嵌套 - 生成阶段18.前端使用 Konva 实现可视化设计器(18)- 素材嵌套 - 加载阶段19.前端使用 Konva 实现可视化设计器(19)- 连接线 - 直线、折线20.前端使用 Konva 实现可视化设计器(20)- 性能优化、UI 美化21.前端使用 Konva 实现可视化设计器(21)- 绘制图形(椭圆)22.前端使用 Konva 实现可视化设计器(22)- 绘制图形(矩形、直线、折线)23.前端使用 Konva 实现可视化设计器(23)- 绘制曲线、属性面板这一章解决两个缺陷,一是调整一些快捷键,使得 Mac 触摸板可以正常操作;二是修复一个 Issue,使得即使素材节点即使被旋转之后,也能正常触发磁贴对齐效果,有个小坑需要注意。
请大家动动小手,给我一个免费的 Star 吧~
大家如果发现了 Bug,欢迎来提 Issue 哟~
快捷键、触摸板的优化
- 兼容 MacOS Command 键
- Ctrl(Win)/Command(Mac) + R 刷新
- 退格键也作为删除键
- 缩放以触摸板双指缩放为准(即鼠标改为上滚轮放大、下滚轮缩小)
请移步查看代码差异,比较简单。
旋转对齐的支持
把磁贴 attract 移动至新增的 AttractTool 中,并新增 AttractDraw 方便调试
先看看 Issue 反馈的问题:
以水平方向上为例,没有旋转之前,逻辑上的对齐线大概如此:
只是,旋转之后,按原来计算坐标+宽高的方式就不合适了:
这里,符合直觉的,应该如下:
正好,官方有个合适的 API 可以获得上面黄线的矩形区域信息,就是 getClientRect。
如果仅考虑单个素材节点,直接获取该节点的 getClientRect 信息,替换掉此前的计算逻辑即可。
可是,这里考虑的还有多选的情况,这个时候就应该通过 transformer 获取了,这里有一个坑,如下:
通过 transformer 的 getClientRect,以为获得左边的区域信息,可事实是左边那样。
这就导致了,计算的磁贴坐标都出现的偏移。
上结论,按 Konva 定结构特点, transformer 必定包含一个 name 为 back 的层,正正是上面左边需要的区域,获取该区域信息就正确了。
// /src/Render/handlers/SelectionHandlers.ts
// 原来通过以下的 x、y、width、height 信息计算:
const pos = this.render.transformer.position()
const width = this.render.transformer.width()
const height = this.render.transformer.height()
需改为
// /src/Render/handlers/SelectionHandlers.ts
// 现在改为通过以下 rect 信息的 x、y、width、height 信息计算:
const rect = this.render.transformer.findOne('.back')!.getClientRect()
最新在线示例,提供了测试调试用例,可以查看连接线的变化:
这样,按新的区域信息计算就满足了:
More Stars please!勾勾手指~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?