- 浏览: 268914 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (152)
- lucene (5)
- java (12)
- eclipse (2)
- GEF (34)
- SWT/JFACE/PLUGIN (58)
- EMF (8)
- GMF (0)
- fckeditor (1)
- AIX (1)
- 云计算 (2)
- 使用 Grails 构建富 Internet 应用程序 (1)
- Grails (1)
- 动态调用动态语言 (2)
- W3C DOM (3)
- Google Maps (1)
- 优化 (1)
- WebSphere (1)
- NSIS (1)
- 计算机安全 (1)
- Mina (2)
- Draw2d (4)
- Compass (1)
- 原创诗集 (3)
- 人生 (1)
- 翻版 (1)
- OSGI (1)
- Ubuntu (2)
- Ireport (2)
最新评论
-
扬手就是一长鞭:
移动label也无法使得save可以执行。
让连线上的Label动起来吧 -
扬手就是一长鞭:
我的save是正常的,我添加删除node或者connectio ...
让连线上的Label动起来吧 -
扬手就是一长鞭:
我也是这扥写的,可是我双击label改变他的文字时,发现sav ...
让连线上的Label动起来吧 -
ae6623:
这段代码放到哪里??
控制拖拽范围 -
ae6623:
真牛!鼠标滚轮缩放GEF画布 ..
getGraphicalV ...
GEF实现用鼠标滑轮控制画布的放大与缩小
我这里以gef.tutorial.step为例,在此工程基础修改代码实现该功能
首先将ContentsEditPart的布局做如下调整
然后实现连线转折点模型:
在来实现Command:
关于转折点的命令这里做了个基类以便添加删除移动实现的方便BendpointCommand:
CreateBendpointCommand:
MoveBendpointCommand:
DeleteBendpointCommand:
对应的Plicy做如下修改:
首先将ContentsEditPart的布局做如下调整
protected IFigure createFigure() { Layer figure = new Layer() { public void paint(Graphics graphics) { graphics.setAntialias(SWT.ON); graphics.setTextAntialias(SWT.ON); super.paint(graphics); } }; figure.setLayoutManager(new XYLayout()); ConnectionLayer layer = (ConnectionLayer) getLayer(LayerConstants.CONNECTION_LAYER); layer.setConnectionRouter(ConnectionRouter.NULL); return figure; }
然后实现连线转折点模型:
/******************************************************************************* * Copyright (c) 2005-2011, Chinese Eclipse Community(CEC) All rights reserved. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.ceclipse.org * * Contributors: * Ming.He <heming@ceclipse.com> - initial API and implementation *******************************************************************************/ package gef.tutorial.step.parts; import java.io.Serializable; import org.eclipse.draw2d.Bendpoint; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; /** * TODO 此处填写 class 信息 * * @author Ming.He * @date 2011-4-15 */ public class ConnectionBendpoint implements Serializable, Bendpoint { /** * */ private static final long serialVersionUID = 1L; private float weight = 0.5f; private Dimension d1 = null; private Dimension d2 = null; public ConnectionBendpoint() { // ignore } public ConnectionBendpoint(Dimension dim1, Dimension dim2) { d1 = dim1; d2 = dim2; } public Dimension getFirstRelativeDimension() { return d1; } public Point getLocation() { return null; } public Dimension getSecondRelativeDimension() { return d2; } public float getWeight() { return weight; } public void setRelativeDimensions(Dimension dim1, Dimension dim2) { d1 = dim1; d2 = dim2; } public void setWeight(float w) { weight = w; } }
在来实现Command:
关于转折点的命令这里做了个基类以便添加删除移动实现的方便BendpointCommand:
/******************************************************************************* * Copyright (c) 2005-2011, Chinese Eclipse Community(CEC) All rights reserved. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.ceclipse.org * * Contributors: * Ming.He <heming@ceclipse.com> - initial API and implementation *******************************************************************************/ package gef.tutorial.step.commands; import gef.tutorial.step.model.AbstractConnectionModel; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; import org.eclipse.gef.commands.Command; /** * TODO 此处填写 class 信息 * * @author Ming.He * @date 2011-4-15 */ public class BendpointCommand extends Command { protected int index = 0; protected Point location = null; protected AbstractConnectionModel connectionModel = null; private Dimension d1 = null; private Dimension d2 = null; protected Dimension getFirstRelativeDimension() { return d1; } protected Dimension getSecondRelativeDimension() { return d2; } protected int getIndex() { return index; } @SuppressWarnings("unused") protected Point getLocation() { return location; } protected AbstractConnectionModel getConnectionModel() { return connectionModel; } public void redo() { execute(); } public void setRelativeDimensions(Dimension dim1, Dimension dim2) { d1 = dim1; d2 = dim2; } public void setIndex(int i) { index = i; } public void setLocation(Point p) { location = p; } public void setConnectionModel(AbstractConnectionModel connection) { connectionModel = connection; } }
CreateBendpointCommand:
/******************************************************************************* * Copyright (c) 2005-2011, Chinese Eclipse Community(CEC) All rights reserved. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.ceclipse.org * * Contributors: * Ming.He <heming@ceclipse.com> - initial API and implementation *******************************************************************************/ package gef.tutorial.step.commands; import gef.tutorial.step.parts.ConnectionBendpoint; /** * TODO 此处填写 class 信息 * * @author Ming.He * @date 2011-4-15 */ public class CreateBendpointCommand extends BendpointCommand { public void execute() { ConnectionBendpoint rbp = new ConnectionBendpoint(getFirstRelativeDimension(), getSecondRelativeDimension()); getConnectionModel().addBendpoint(getIndex(), rbp); super.execute(); } public void undo() { super.undo(); getConnectionModel().removeBendpoint(getIndex()); } }
MoveBendpointCommand:
/******************************************************************************* * Copyright (c) 2005-2011, Chinese Eclipse Community(CEC) All rights reserved. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.ceclipse.org * * Contributors: * Ming.He <heming@ceclipse.com> - initial API and implementation *******************************************************************************/ package gef.tutorial.step.commands; import gef.tutorial.step.parts.ConnectionBendpoint; /** * TODO 此处填写 class 信息 * * @author Ming.He * @date 2011-4-15 */ public class MoveBendpointCommand extends BendpointCommand { private ConnectionBendpoint bendpoint = null; public void execute() { bendpoint = (ConnectionBendpoint) getConnectionModel().getBendpoints().get(getIndex()); getConnectionModel().removeBendpoint(getIndex()); super.execute(); } public void undo() { super.undo(); getConnectionModel().addBendpoint(getIndex(), bendpoint); } }
DeleteBendpointCommand:
/******************************************************************************* * Copyright (c) 2005-2011, Chinese Eclipse Community(CEC) All rights reserved. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.ceclipse.org * * Contributors: * Ming.He <heming@ceclipse.com> - initial API and implementation *******************************************************************************/ package gef.tutorial.step.commands; import gef.tutorial.step.parts.ConnectionBendpoint; /** * TODO 此处填写 class 信息 * * @author Ming.He * @date 2011-4-15 */ public class DeleteBendpointCommand extends BendpointCommand { private ConnectionBendpoint bendpoint = null; public void execute() { bendpoint = (ConnectionBendpoint) getConnectionModel().getBendpoints().get(getIndex()); getConnectionModel().removeBendpoint(getIndex()); super.execute(); } public void undo() { super.undo(); getConnectionModel().addBendpoint(getIndex(), bendpoint); } }
对应的Plicy做如下修改:
/******************************************************************************* * Copyright (c) 2005-2011, Chinese Eclipse Community(CEC) All rights reserved. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.ceclipse.org * * Contributors: * Ming.He <heming@ceclipse.com> - initial API and implementation *******************************************************************************/ package gef.tutorial.step.policies; import gef.tutorial.step.commands.BendpointCommand; import gef.tutorial.step.commands.CreateBendpointCommand; import gef.tutorial.step.commands.DeleteBendpointCommand; import gef.tutorial.step.commands.MoveBendpointCommand; import gef.tutorial.step.model.AbstractConnectionModel; import org.eclipse.draw2d.Connection; import org.eclipse.draw2d.geometry.Point; import org.eclipse.gef.commands.Command; import org.eclipse.gef.editpolicies.BendpointEditPolicy; import org.eclipse.gef.requests.BendpointRequest; /** * TODO 此处填写 class 信息 * * @author Ming.He * @date 2011-4-15 */ public class CustomBendpointEditPolicy extends BendpointEditPolicy { protected Command getCreateBendpointCommand(BendpointRequest request) { CreateBendpointCommand command = new CreateBendpointCommand(); Point p = request.getLocation(); Connection conn = getConnection(); conn.translateToRelative(p); command.setLocation(p); Point ref1 = getConnection().getSourceAnchor().getReferencePoint(); Point ref2 = getConnection().getTargetAnchor().getReferencePoint(); conn.translateToRelative(ref1); conn.translateToRelative(ref2); command.setRelativeDimensions(p.getDifference(ref1), p.getDifference(ref2)); command.setConnectionModel((AbstractConnectionModel) request.getSource().getModel()); command.setIndex(request.getIndex()); return command; } protected Command getDeleteBendpointCommand(BendpointRequest request) { BendpointCommand command = new DeleteBendpointCommand(); Point p = request.getLocation(); command.setLocation(p); command.setConnectionModel((AbstractConnectionModel) request.getSource().getModel()); command.setIndex(request.getIndex()); return command; } protected Command getMoveBendpointCommand(BendpointRequest request) { // ������bend���λ�� MoveBendpointCommand command = new MoveBendpointCommand(); Point p = request.getLocation(); Connection conn = getConnection(); conn.translateToRelative(p); command.setLocation(p); Point ref1 = getConnection().getSourceAnchor().getReferencePoint(); Point ref2 = getConnection().getTargetAnchor().getReferencePoint(); conn.translateToRelative(ref1); conn.translateToRelative(ref2); command.setRelativeDimensions(p.getDifference(ref1), p.getDifference(ref2)); command.setConnectionModel((AbstractConnectionModel) request.getSource().getModel()); command.setIndex(request.getIndex()); return command; } }
发表评论
-
缺省将Palette展开
2011-07-29 17:37 1534/** 弹出调色板使用状态的首选项标识 */ priv ... -
图元间多条连线处理方式
2011-04-10 01:10 1350DiagramEditPart implements Laye ... -
给Figure添加滚动条
2011-04-10 00:53 1945Draw2d中有ScrollPane这样一个IFigure,它 ... -
去掉子节点句柄
2011-04-09 19:40 1309虽然可以通过给子节点添加SelectionPolicy来完成对 ... -
给DiagramEditPart添加Request
2011-01-14 00:16 1128实现ScalableFreeformRootEditPart中 ... -
缺省将FlyoutPalette放在左边
2010-12-30 22:49 1127重写FlyoutPaletteComposite.Flyout ... -
连线上加文字
2010-12-30 13:50 1597前面写了个连线上显示文字,直接用的label,那样确实简单,但 ... -
实现GEF RulerComposite
2010-12-30 13:41 1805模型部分: public class ElementBase ... -
根据模型得到对应的控制器
2010-12-30 10:49 914(EditPart) getGraphicalViewer() ... -
创建连线后点击空白区域箭头恢复成默认样式
2010-12-29 21:39 1700关于连线创建的过程大家可以看http://blog.china ... -
GEF实现用鼠标滑轮控制画布的放大与缩小
2010-10-28 13:22 1967很简单哇,GEF已经实现了,一行代码我就不多说了,在confi ... -
实现GEF中editor的背景为网格
2010-05-13 17:32 1234在editor中的initializeGraphicalVie ... -
横向排列算法
2010-03-15 20:17 1201List<NetunitModel> childr ... -
星形排列算法
2010-03-15 20:15 1367List<NetunitModel> childr ... -
外部执行Command而Editor不提示已修改的解决办法
2009-12-21 16:19 1268理论:有些时候的需求往往不是通过plette来创建模型和连线以 ... -
选择或取消选择当前的EditPart,改变连线视图的连线样式
2009-12-21 14:45 1299在LineConnectionEditPart类中实现Abst ... -
自定义Decoration
2009-12-21 14:36 1406大家都知道new PolygonDecoration就表示带箭 ... -
让连线上的Label动起来吧
2009-12-19 12:24 1609大家都知道GEF中连线上的label默认是在线的中间,一旦要连 ... -
设置连线样式
2009-12-16 12:26 1659private void setConnectionShiap ... -
public忽悠了不少人啊
2009-12-09 16:29 1334当有人想继承org.eclipse.draw2d.graph中 ...
相关推荐
实现图元闪烁的技术不仅限于改变尺寸,还可以通过改变颜色、透明度、位置等多种方式。在实际应用中,需要注意闪烁频率的控制,过高可能会引起视觉疲劳,过低则可能无法达到预期的视觉效果。此外,考虑到不同用户的...
首先,我们要理解MapX中的点图元(Point Element)是地图上表示特定地理位置的基本元素。MapX提供了一套API,允许开发者创建、修改和管理这些图元。然而,原始的API可能并不完全满足所有用户需求,例如,移动和缩放...
应用设计上,我完成了满足文件接口要求的命令行程序,完成了基于鼠标点击的图元绘制、基于鼠标拖曳的图元移动,和基于可视化锚点及鼠标滚轮的图元旋转、图元缩放,并将控制逻辑集成到 GUI 应用中。最终使用静态编译...
3. 获取图元位置:通过MapObject的属性,如Left、Top、Right、Bottom等,可以获取图元的当前坐标。 4. 更新图元位置:当需要移动图元时,改变MapObject的坐标属性,然后调用Refresh方法更新地图视图。 5. 处理鼠标...
本文介绍了一种新的方法,通过该方法可以直接对图元进行删、改、查操作而无需事先搜索定位。 #### 方法概述 本方法的核心在于使用MapX提供的API直接创建、修改和删除图元,而不需要经过复杂的搜索过程。这种方法...
随着科技的发展,地理信息系统(GIS)已经成为一个不可或缺的工具,在城市规划、环境研究、资源管理等多个领域发挥着重要作用。...随着GIS应用的日益广泛,地图图元修改工具必将在更多的领域中发挥出更大的作用。
2. **几何形状**:每个图元都是由基本的几何形状组合而成,如直线、曲线、圆弧等,这些形状在SVG中通过坐标和路径数据来定义。 3. **填充和描边**:图元的填充颜色和边框颜色可以通过SVG的fill和stroke属性进行设置...
在本篇文章中,作者利用AutoLISP语言进行了这种二次开发,以实现对图元(如直线段、圆弧)之间位置关系的智能化分析。 AutoLISP是AutoCAD内置的一种解释型编程语言,它允许开发者直接访问和操作AutoCAD的数据结构,...
在本文中,我们将深入探讨如何使用C#语言和GDI+库来实现图元绘制及拾取功能。GDI+(Graphics Device Interface Plus)是Windows应用程序中用于图形绘制的一个强大工具,它允许开发者创建丰富的2D图形、图像处理以及...
在实际应用中,可能需要结合窗口消息处理,如WM_PAINT消息,以响应用户的交互,更新图元的位置。 5. **代码规范与清晰性**: 提到的代码规范清楚,意味着良好的编程实践,包括但不限于适当的命名、注释、模块化和...
`QGraphicsScene`管理所有`QGraphicsItem`,而`QGraphicsView`则提供了用户与这些图元交互的窗口。 以上就是关于“QGraphicsItem自定义图元,拖动绘制,拖动拉伸缩放图元”的核心知识点。通过深入理解并实践这些...
它使得图元能够根据外部数据的变化而变化,实现动态显示。 2. **ITagReader**:这是一个可视化的控件基类,它定义了读取数据源的方法。通过继承ITagReader,图元可以读取数据并更新其显示状态。 3. **ITagWriter**:...
在这个编辑器中,Access数据库可能用于存储图元的属性,如形状类型、颜色、大小、位置等,以及与图元相关的元数据,比如创建日期、作者信息等。 使用数据库的好处包括数据的一致性、安全性和可扩展性。一致性确保...
在电力行业中,SVG格式被广泛用于定义电力图元,即电力系统中的符号和设备图标,因为它们可以被缩放而不损失清晰度,非常适合在各种尺寸的屏幕和打印材料上使用。 在电力接线图的绘制中,SVG格式的电力图元定义提供...
4. **方便编辑**:作为一个整体的边框,可以进行整体移动、缩放和修改,而不会影响到单个元素。 5. **增强可视化**:统一的边框可以提供更清晰的视觉效果,尤其是在打印或导出时。 在使用"相连图元转边框 修改版....
这些图元可能携带丰富的属性信息,如点的位置坐标、线的长度、面的面积,以及附加的人工信息如名称、类型等。查询图元信息是GIS应用中的常见需求,有助于分析和理解地图数据。 描述中提到的“控制,点击选择,矩形...
设置图元的位置、形状、颜色等属性。 4. 添加图元到图层:将创建的图元对象添加到对应的图层中。 5. 更新地图视图:最后,调用Map的Redraw方法更新地图显示,使得新添加的图元可见。 示例代码(简略): ```csharp ...
目前已支持简单的矩形图元和图元间的连线(直线、直角连线两种),拖拽图元等能力。 该javascript library的实现借鉴了NetronLight的不少思路,相应地将之命名为ternlight。 目前,支持的主要能力如下: 1...
而用户交互方面,易语言有丰富的控件库,可以创建各种界面元素,如按钮、菜单等,以提供良好的用户体验。 总的来说,"易语言源码易语言取图元文件源码.rar"这个压缩包中的内容,为我们展示了如何在易语言环境中处理...
在3D图形绘制中,每个顶点定义了一个几何位置,多个顶点通过连接线形成图元,如点、线段或三角形。VertexBuffer允许一次性将大量顶点数据上传到显卡,提高了渲染效率。在"Star引擎"的初步实现中,利用VertexBuffer...