标尺位于画布的上部和左侧,在每个标尺上可以建立很多与标尺垂直的辅助线,这些显示在画布上的虚线具有吸附功能。效果图如下所示:
标尺和辅助线的实现要稍微复杂一些。首先要修改原有的模型,新增加标尺和辅助线这两个类:DiagramRuler、DiagramGuide。在根模型ShapesDiagram中新增如下变量:
/**为模型添加标尺对象*/
private DiagramRuler leftRuler,topRuler;
private boolean rulersVisibility = true;
private boolean gridVisibility = true;
标尺和网格是否显示是保存在根模型中的,编辑后模型保存时需要将这两个值保存(可以写XML或者序列化都行),下次在打开该模型文件时就可以还原上次的设置了。rulersVisibility 用来表示标尺的可见性,因为辅助线是建立在标尺上的,所以DiagramRuler到DiagramGuide有一个包含的关系。
ModelElement 到Guide有两个引用,表示ModelElement 吸附到的两条辅助线(为了简单起见,在本文附的例子中并没有实际使用到它们,Guide类中定义的几个方法也没有用到)。Guide类