GEF学习系列之二:网格吸附与几何对齐
来源:互联网 发布:战姬天下武将成长数据 编辑:程序博客网 时间:2024/05/16 11:21
网格辅助
网格是一般图形编辑系统中的常用辅 助功能,它可以帮我们定位画布上的图形元素,当被拖动的图元接近网格线时会自动吸附在网格线上,这样大大减少了图形编辑软件的易用性,在 GEF 中也提供了这样的功能。效 果如图所示:
是否显示网格以及是否打开吸附功能是由 GraphicalViewer 的两个布尔类型的属性( property )值决定的,它们分别是 SnapToGrid.PROPERTY_GRID_VISIBLE 和 SnapToGrid.PROPERTY_GRID_ENABLED ,这些属性是通过 GriaphicalViewer.getProperty() 和setProperty() 方法来操作的。 GEF 为我们提供了一个 ToggleGridAction 用来同时切换它们的值(保 持这两个值同步确实符合一般使用习惯),但没有像缩放功能那样提供对应的RetargetAction ,不知道 GEF 是出于什么考虑。另外因为这个 Action 没有预先设置的图标,所以 把它直接添加到工具条上会很不好看,所以要么把它只放在菜单中,要么为它设置一个图标,至于添加到菜单的方法这里不赘述了。
要想在保存模型时同时记录当前网格线是否显示,必须在画布模型里增加一个布尔类型变量,并在打开模型和保存模型的方法中增加处理它的代码。
几何对齐
这个功能也是为了方便用户 排列图形元素的,如果打开了此功能,当用户拖动的图形有某个边靠近另一图形的某个平行边延长线时,会自动吸附到这条延长线上;若两个图形的中心线(通过图形中心点的水平或垂直线)平行靠近时也会产生吸附效果。
几何对齐也是通过 GraphicalViewer 的属性来控制是否打开的, 属性的名称是 SnapToGeometry.PROPERTY_SNAP_ENABLED ,值为布尔类型。在程序里 增加吸附对齐切换的功能和前面说的增加网格切换功能基本是一样的,记住 GEF 为它提供的 Action 是 ToggleSnapToGeometryAction 。
要实现对齐功能,还有一个重要的步骤,那就是在画布所对应的 EditPart 的 getAdapter() 方法里增加对 SnapToHelper 类的回应,像下面这样:
- GEF学习系列之二:网格吸附与几何对齐
- GEF 学习系列之三:缩放、位置和尺寸对齐
- [GEF循序渐进系列之二]GEF概述
- GEF入门系列(二、GEF概述)
- GEF 学习系列之四:使用GEF构建应用程序的步骤
- three.js 02-02 之使用几何与网格对象
- 闲着无聊,做了个模拟几何画板网格吸附功能的程序
- [GEF循序渐进系列之三]Hello world with GEF
- 算法系列之九:计算几何与图形学有关的几种常用算法(二)
- 算法系列之九:计算几何与图形学有关的几种常用算法(二)
- 算法系列之九:计算几何与图形学有关的几种常用算法(二) .
- 算法系列之九:计算几何与图形学有关的几种常用算法(二)
- GEF学习笔记(二) 模拟GEF设计思路,解剖GEF 1
- GEF 学习系列之五:给图元添加DirectEdit功能
- GEF 学习系列之六:图元的选择框和反馈显示
- flash AS3.0学习笔记-拖动棋子(吸附)到棋盘对应网格中心
- Android学习笔记二十六之GridView网格视图
- Android学习笔记二十六之GridView网格视图
- MIni2440 USB KITL启用
- 只有10%程序员能正确实现二分查找算法
- 单反相机镜头的“三大纪律,八项注意”
- sql语句获取本周、上一周、本月数据
- 哈哈!我的博客,从现在开始!
- GEF学习系列之二:网格吸附与几何对齐
- MyEclipse 8.5 中文汉化教程
- 简单介绍适配器模式
- java中数据在内存中的存储
- 在右键中添加CMD快速通道
- 转EventUtil
- 近期计划
- ASP.NET中Excel: Access is denied的问题解决
- javaScript 打开窗口最大化