上一篇:
Blazor入门-简单svg绘制+导出图像_blazor 画图-CSDN博客
https://blog.csdn.net/pxy7896/article/details/139003443
注意:本文只给出思路和框架,对于具体的计算细节,考虑到日后会写入软件著作权和专利文书,因此不会展示。
问题
上一篇的结尾提到Label重叠问题。事实上,这个问题很严重。
比如我手边这个文件,按照上一篇的方法绘制之后,会变成:(箭头是新画法,也是简单的三角函数,不展开)
这种重叠不仅让画面变得不美观、杂乱,更是影响了用户的阅读体验。
有的文件直接无法识别:
这是因为:
- 某些元件的起终位置有重叠
- 在某些区域中,元件彼此相隔太近,因此计算出的坐标彼此间距极小,显示到前台就会重叠
解决思路
处理起终位置重叠的元件
首先是对元件做排序,然后识别出有重叠的元件。
目前我采取一种傻瓜式的解决方案,流程是:
- 对元件做排序(可以按先起点后终点或者按中点升序排序),获取排序后的列表
L1
- 将可以放置元件的区域分成 N 层(实际是 N 层同心圆环),对于
L1
中每个特征,使用下面的分层方法:
2.1 将第一个特征 f 0 f_0 f0 放入第一层;
2.2 对于后续特征 f i f_i fi(起始数值分别为 f i s f_{is} fis和 f i e f_{ie} fie):遍历当前层的空闲位置,如果对于某个空闲位置 p i p_i pi(起始数值分别为