我正在使用 flex 开发一个带有形状的简单图表工具。首先,我使用了一个简单的 20*20 网格。
但是他们真正酷的东西是自动斧头磁铁效应,这就是我所说的至少是为了明白为什么我的意思是我制作了一个 balsamiq 的小视频。
如您所见,它在垂直水平边界和中心轴上对齐。
- 边框:灰色轴
- 水平对齐(高度/2)中心:蓝斧
- 否 垂直对齐 (width/2) ax
- 一些 25px 的中间填充空间:绿色轴
您认为此类算法如何工作:现在我将不进行旋转。
给定在宽度w和高度h的左上角x,y位置选择的形状S1。
查看与两个区域相交的所有形状:
对于 y > 0,从 xmin = x, xmax= x+w。
从 yming = y ,对于 x > 0,ymax= y+h。
一旦我有了相关形状的列表,我就会检查是否有任何条件匹配:
当我使用“=”时,它的近似值 + 或 - 2 个像素会产生想要的“磁铁”效果
- S1 x = S'x => x 处的灰线
- S1 x+w = S'x => x+w 处的灰线
- S1 y = S'y => y 处的灰线
- S1 y+h = S'y => y+h 处的灰线
- S1 x = S'x和S1 x+w = S'x+w => x + w/2 处的蓝线
并且给定一个 20 px 的填充磁铁
- S1 x = S'x + PADD => S1 x 处的绿线
- S1 x = S'x - PADD => S1 x 处的绿线
- S1 y = S'y + PADD => S1 y 处的绿线
- S1 y = S'y - PADD => S1 y 处的绿线
你对此有何看法?