Eclipse插件 - 如何使用多边形创建菱形图(或通过直接实现IFigure)多边形

时间:2014-09-25 15:49:48

标签: eclipse eclipse-plugin eclipse-rcp zest

我正在尝试使用Zest eclipse创建流程图。 为了创建图形,我使用的是graphViewer。 对于节点,我需要自定义形状。 为了实现这一点,我在graphViewer的labelProvider中实现了IFigureProvider。

但我没有得到如何创建用于表示决策节点的菱形。

graphiti是做这类事情的更好方法吗?

1 个答案:

答案 0 :(得分:1)

通过在重写的paintFigure方法绘制多边形中扩展Figure类来创建自定义图形类,如下所示:

@Override
protected void paintFigure(Graphics g) {
super.paintFigure(g);
Rectangle r = getClientArea();
g.setAntialias(SWT.ON);
g.setLineWidthFloat(2.0f);
g.setBackgroundColor(ColorConstants.black);
PointList diamondPointList=new PointList();
diamondPointList.addPoint(r.x()+r.width()/2, r.y());
diamondPointList.addPoint(r.x()+r.width(), r.y()+r.height()/2);
diamondPointList.addPoint( r.x()+r.width()/2, r.y()+r.height());
diamondPointList.addPoint(r.x(), r.y()+r.height()/2);
g.drawPolygon(diamondPointList);

g.drawLine(r.x()+r.width()/2, (r.y()+r.height()/2)-10, r.x()+r.width()/2, (r.y()+r.height()/2)+10);
g.drawLine((r.x()+r.width()/2)-10, r.y()+r.height()/2, (r.x()+r.width()/2)+10,  r.y()+r.height()/2);
}