Project Graph

涂鸦

涂鸦的归类

涂鸦之所以设定为不可连接,是因为涂鸦非常密集,再建立连线会造成混乱和误触

涂鸦的用途

  1. 绘制图形
  2. 标注
  3. 贯穿可连接实体后选中不规则区域的实体

绘制直线

按住shift键之后,左键拖动

如果想绘制垂直与坐标轴的直线,需要同时按住ctrl键和shift键。

量角器

按住shift键之后,会出现跟随鼠标的量角器

此时转动滚轮即可旋转量角器

可以配合窗口透明度调整快捷键,将此软件的窗口叠放在建筑设计图纸上,进行测量。

调整笔画粗细

  1. 快捷键习惯:使用快捷键 -= (键盘顶部)调整笔画粗细
  2. PhotoShop习惯:在鼠标为涂鸦状态下,按住Alt键,鼠标右键按下并上下移动,调整笔画粗细

删除涂鸦

可以直接用右键斩断涂鸦笔画,也可以选中后按Delete删除。

扩散选择

扩散选择是涂鸦的一个特性

当涂鸦一笔画经过某些 可连接节点 时,选中当前的涂鸦,按默认快捷键 ctrl + w 可以扩散到所有这一笔画触碰到的所有 可连接节点 上。

进而可以快速以不规则形状选中多个实体。

同样的,当一个 可连接节点 和一个涂鸦有触碰时,可以先选中可连接节点,再按 ctrl + w 扩散到涂鸦上,也可以先选中涂鸦,再按 ctrl + w 扩散到可连接节点上。

甚至可以逐层扩散

涂鸦的底层原理

涂鸦是第一个出现的不可用有向边连接的Entity。曾经的实体都是ConnectableEntity。

笔迹拥有Entity的特性,例如:可以被选中、移动、删除、复制、粘贴、放在Section框中可以被Section的拖动而连带移动。

问题:为什么涂鸦对象需要uuid?

答:因为涂鸦可以被放入Section中带动移动,所以为了记录这种引用关系,涂鸦必须要有uuid

涂鸦笔画本质上是不同粗细的折线段。(这里对笔画的定义是:绘制过程中鼠标从开始按下到松开的一笔画)

笔画的字符串结构如下:

"x1,y1,w1~x2,y2,w2~x3,y3,w3 ..."

波浪号作为分隔符

其中为了保证字符串不会太长,每个坐标都保留两位小数,第三个参数w是笔画的粗细,取整处理

问题:为什么涂鸦对象的字符串化后,每一小段都要有一个粗细参数 w

答:最开始打算实现笔锋的效果,进而每一小段粗细都可以不同,但后来实测发现这样会极大降低性能,频繁改变粗细的渲染会导致卡顿。

因此,为了保证性能,涂鸦的粗细按照第一小段折线的w参数来统一处理了

问题:既然已经不打算做笔锋效果了,为什么还要保留笔画粗细参数?

答:不排除以后还会出Godot版本,保留这个字段能和未来的Godot版本保持一致性。

On this page