GMF学习之十八链接线Editpart

修改连线是否带有箭头的方案

1、从元模型的角度修改:

第一步:在图形模型中定义连线图形,代码例子如下:

1)带有关闭箭头的实线

<descriptors
        name="SolidLineClosedArrow">
      <actualFigure
          xsi:type="gmfgraph:PolylineConnection"
          name="SolidLineClosedArrow"
          targetDecoration="//@figures.0/@descriptors.0/@actualFigure/@children.0">
        <children
            xsi:type="gmfgraph:PolygonDecoration"
            name="ClosedArrow">
          <backgroundColor
              xsi:type="gmfgraph:ConstantColor"
              value="black"/>
          <template/>
          <template
              x="-1"
              y="1"/>
          <template
              x="-1"
              y="-1"/>
          <template/>
        </children>
      </actualFigure>
    </descriptors>

2)带有打开箭头的虚线

<descriptors
        name="DashedLineOpenArrow">
      <actualFigure
          xsi:type="gmfgraph:PolylineConnection"
          name="DashedLineOpenArrow"
          lineKind="LINE_DASH">
        <children
            xsi:type="gmfgraph:PolylineDecoration"
            name="OpenArrow">
          <template
              x="-1"
              y="1"/>
          <template/>
          <template
              x="-1"
              y="-1"/>
        </children>
      </actualFigure>
    </descriptors>

3)不带箭头的虚线

<descriptors
        name="DashedLine">
      <actualFigure
          xsi:type="gmfgraph:PolylineConnection"
          name="DashedLine"
          lineKind="LINE_DASH"/>
    </descriptors>

第二步:引用链接线

修改在属性面板中Target Decoration属性值。

第三步:重新生成图形编辑器代码

 2、从代码层面的角度修改

直接修改链接类*EditPart代码,加入代码例子如下:

		private RotatableDecoration createTargetDecoration() {
			PolygonDecoration df = new PolygonDecoration();
			df.setFill(true);
			df.setBackgroundColor(ColorConstants.black);
			PointList pl = new PointList();
			pl.addPoint(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0));
			pl.addPoint(getMapMode().DPtoLP(-1), getMapMode().DPtoLP(1));
			pl.addPoint(getMapMode().DPtoLP(-1), getMapMode().DPtoLP(-1));
			pl.addPoint(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0));
			df.setTemplate(pl);
			df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3));
			return df;
		}

阅读更多
想对作者说点什么? 我来说一句

GMF官方教程完整代码

2010年05月26日 5.08MB 下载

没有更多推荐了,返回首页

不良信息举报

GMF学习之十八链接线Editpart

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭