涂鸦
涂鸦的归类
涂鸦之所以设定为不可连接,是因为涂鸦非常密集,再建立连线会造成混乱和误触
涂鸦的用途
- 绘制图形
- 标注
- 贯穿可连接实体后选中不规则区域的实体
绘制直线
按住shift键之后,左键拖动
如果想绘制垂直与坐标轴的直线,需要同时按住ctrl键和shift键。
量角器
按住shift键之后,会出现跟随鼠标的量角器
此时转动滚轮即可旋转量角器
可以配合窗口透明度调整快捷键,将此软件的窗口叠放在建筑设计图纸上,进行测量。
调整笔画粗细
- 快捷键习惯:使用快捷键
-
和=
(键盘顶部)调整笔画粗细 - PhotoShop习惯:在鼠标为涂鸦状态下,按住Alt键,鼠标右键按下并上下移动,调整笔画粗细
删除涂鸦
可以直接用右键斩断涂鸦笔画,也可以选中后按Delete删除。
扩散选择
扩散选择是涂鸦的一个特性
当涂鸦一笔画经过某些 可连接节点
时,选中当前的涂鸦,按默认快捷键 ctrl + w
可以扩散到所有这一笔画触碰到的所有 可连接节点
上。
进而可以快速以不规则形状选中多个实体。
同样的,当一个 可连接节点
和一个涂鸦有触碰时,可以先选中可连接节点,再按 ctrl + w
扩散到涂鸦上,也可以先选中涂鸦,再按 ctrl + w
扩散到可连接节点上。
甚至可以逐层扩散
涂鸦的底层原理
涂鸦是第一个出现的不可用有向边连接的Entity。曾经的实体都是ConnectableEntity。
笔迹拥有Entity的特性,例如:可以被选中、移动、删除、复制、粘贴、放在Section框中可以被Section的拖动而连带移动。
问题:为什么涂鸦对象需要uuid?
答:因为涂鸦可以被放入Section中带动移动,所以为了记录这种引用关系,涂鸦必须要有uuid
涂鸦笔画本质上是不同粗细的折线段。(这里对笔画的定义是:绘制过程中鼠标从开始按下到松开的一笔画)
笔画的字符串结构如下:
波浪号作为分隔符
其中为了保证字符串不会太长,每个坐标都保留两位小数,第三个参数w是笔画的粗细,取整处理
问题:为什么涂鸦对象的字符串化后,每一小段都要有一个粗细参数 w
?
答:最开始打算实现笔锋的效果,进而每一小段粗细都可以不同,但后来实测发现这样会极大降低性能,频繁改变粗细的渲染会导致卡顿。
因此,为了保证性能,涂鸦的粗细按照第一小段折线的w
参数来统一处理了
问题:既然已经不打算做笔锋效果了,为什么还要保留笔画粗细参数?
答:不排除以后还会出Godot版本,保留这个字段能和未来的Godot版本保持一致性。