Draw2D 绘图-- UML 类图

导读:

  图形编辑框架GEF有一个绘图和布局的插件叫Draw2D.Draw2D为GEF应用程序提供绘画和布局管理功能。本文集中探讨如何使用它去绘制一个简单的UML类图形。大多数应用程序使用GEF插件作为编辑层。

   生成 Draw2d 图形

   一个实例这篇文章的最终目的就是生成如下的一个图形,它是一个简单的UML类图:

  

  

   设计图形

  第一步就是要设计这个图形要由哪些组件组成。

  在这个例子中,这个图形可以由三个子图形组成。(我们先设定这个图形叫UMLClassFigure)。它的第一个子图形: 一个Label 图形,它用来显示类的名称这个例子中为Table。第二个子图形是一个容器去装类的属性和方法。为这个目的,我们将设计一个图形称为Compartment图形。类和compartment图形都是使用ToolbarLayout布局去放置它们的子图形。如同所示:

  

  

   创建 CompartmentFigure 类

  CompartmentFigur是被用来装方法和属性的。这个类继承自org.eclipse.draw2d.Figure,使用ToolbarLayout布局。而且它使用自定义的边框。这个边框是很简单的顶部的黑色的1个象素,用来分隔其它的CompartmentFigures.它的代码如下:

  public class CompartmentFigure extends Figure {

  public CompartmentFigure() {

  ToolbarLayout layout = new ToolbarLayout();

  layout.setMinorAlignment(ToolbarLayout.ALIGN_TOPLEFT);

  layout.setStretchMinorAxis(false);

  layout.setSpacing(2);

  setLayoutManager(layout);

  setBorder(new CompartmentFigureBorder());

  }

  

  public class CompartmentFigureBorder extends AbstractBorder {

  public Insets getInsets(IFigure figure) {

  return new Insets(1,0,0,0);

  }

  public void paint(IFigure figure, Graphics graphics, Insets insets) {

  graphics.drawLine(getPaintRectangle(figure, insets).getTopLeft(),

  tempRect.getTopRight());

  }

  }

  }

  

   创建UMLClassFigure类

  

  UMLClassFigure类和前面的类在很多地方都相似。它包括3个子图形------

  

  两个CompartmentFigures分别装属性和方法,一个Draw2d Label显示类的名称。

  

  它同样使用垂直的ToolbarLayout 布局来放置它的子图形。

  

  UMLClassFigure使用Draw2d的Lineborder在它边上绘制一个边框。代码如下:

  

  public class UMLClassFigure extends Figure {

  public static Color classColor = new Color(null,255,255,206);

  private CompartmentFigure attributeFigure = new CompartmentFigure();

  private CompartmentFigure methodFigure = new CompartmentFigure();

  public UMLClassFigure(Label name) {

  ToolbarLayout layout = new ToolbarLayout();

  setLayoutManager(layout);

  setBorder(new LineBorder(ColorConstants.black,1));

  setBackgroundColor(classColor);

  setOpaque(true);

  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cd C:\Program Files\FlightGear fgfs --fg-root=C:\Program Files\FlightGear\data --aircraft=ufo --in-air --fdm=null --telnet=5501 --telnet=5502 --telnet=5503 --disable-ai-traffic --disable-real-weather-fetch --disable-random-objects --disable-terrasync --disable-clouds --disable-sound --disable-panel --disable-hud --disable-specular-highlight --timeofday=noon --prop:/sim/rendering/multi-sample-buffers=1 --prop:/sim/rendering/multi-samples=2 --prop:/sim/rendering/draw-mask-clouds=false --prop:/sim/rendering/draw-mask-terrain=true --prop:/sim/rendering/draw-mask-objects=true --prop:/sim/rendering/draw-mask-lights=true --prop:/sim/rendering/draw-mask-internal=true --prop:/sim/rendering/draw-mask-cockpit=true --prop:/sim/rendering/draw-mask-effects=true --prop:/sim/rendering/draw-mask-overlay=true --prop:/sim/rendering/draw-mask-world=true --prop:/sim/rendering/draw-mask-panel=true --prop:/sim/rendering/draw-mask-vr=true --prop:/sim/rendering/draw-mask-2d=true --prop:/sim/rendering/draw-mask-3d=true --prop:/sim/rendering/draw-mask-sky=true --prop:/sim/rendering/draw-mask-shadows=true --prop:/sim/rendering/draw-mask-cabin=true --prop:/sim/rendering/draw-mask-weather=true --prop:/sim/rendering/draw-mask-stereo=true --prop:/sim/rendering/draw-mask-internal-cockpit=true --prop:/sim/rendering/draw-mask-internal-windows=true --prop:/sim/rendering/draw-mask-internal-instruments=true --prop:/sim/rendering/draw-mask-internal-overlay=true --prop:/sim/rendering/draw-mask-internal-effects=true --prop:/sim/rendering/draw-mask-internal-lights=true --prop:/sim/rendering/draw-mask-internal-world=true --prop:/sim/rendering/draw-mask-internal-panel=true --prop:/sim/rendering/draw-mask-internal-3d=true --prop:/sim/rendering/draw-mask-internal-sky=true --prop:/sim/rendering/draw-mask-internal-cabin=true --prop:/sim/rendering/draw-mask-internal-weather=true --prop:/sim/rendering/draw-mask-internal-stereo=true --prop:/sim/rendering/draw-mask-internal-shadow=true --prop:/sim/rendering/draw-mask-internal-stall=true --prop:/sim/rendering/draw-mask-internal-aoa=true --prop:/sim/rendering/draw-mask-internal-thermal=false --prop:/sim/rendering/draw-mask-internal-ice=false --prop:/sim/rendering/draw-mask-internal-glass=true --prop:/sim/rendering/draw-mask-internal-dead=true --prop:/sim/rendering/draw-mask-internal-reflection=true程序显示错误unknown command-line option: enable-hud-2d怎么解决
05-10
你可以尝试将启用2D HUD的选项从命令行中移除,改为在游戏内部手动启用。可以尝试修改命令行参数为: ``` cd C:\Program Files\FlightGear fgfs --fg-root=C:\Program Files\FlightGear\data --aircraft=ufo --in-air --fdm=null --telnet=5501 --telnet=5502 --telnet=5503 --disable-ai-traffic --disable-real-weather-fetch --disable-random-objects --disable-terrasync --disable-clouds --disable-sound --disable-panel --timeofday=noon --prop:/sim/rendering/multi-sample-buffers=1 --prop:/sim/rendering/multi-samples=2 --prop:/sim/rendering/draw-mask-clouds=false --prop:/sim/rendering/draw-mask-terrain=true --prop:/sim/rendering/draw-mask-objects=true --prop:/sim/rendering/draw-mask-lights=true --prop:/sim/rendering/draw-mask-internal=true --prop:/sim/rendering/draw-mask-cockpit=true --prop:/sim/rendering/draw-mask-effects=true --prop:/sim/rendering/draw-mask-overlay=true --prop:/sim/rendering/draw-mask-world=true --prop:/sim/rendering/draw-mask-panel=true --prop:/sim/rendering/draw-mask-vr=true --prop:/sim/rendering/draw-mask-3d=true --prop:/sim/rendering/draw-mask-sky=true --prop:/sim/rendering/draw-mask-shadows=true --prop:/sim/rendering/draw-mask-cabin=true --prop:/sim/rendering/draw-mask-weather=true --prop:/sim/rendering/draw-mask-stereo=true --prop:/sim/rendering/draw-mask-internal-cockpit=true --prop:/sim/rendering/draw-mask-internal-windows=true --prop:/sim/rendering/draw-mask-internal-instruments=true --prop:/sim/rendering/draw-mask-internal-overlay=true --prop:/sim/rendering/draw-mask-internal-effects=true --prop:/sim/rendering/draw-mask-internal-lights=true --prop:/sim/rendering/draw-mask-internal-world=true --prop:/sim/rendering/draw-mask-internal-panel=true --prop:/sim/rendering/draw-mask-internal-3d=true --prop:/sim/rendering/draw-mask-internal-sky=true --prop:/sim/rendering/draw-mask-internal-cabin=true --prop:/sim/rendering/draw-mask-internal-weather=true --prop:/sim/rendering/draw-mask-internal-stereo=true --prop:/sim/rendering/draw-mask-internal-shadow=true --prop:/sim/rendering/draw-mask-internal-stall=true --prop:/sim/rendering/draw-mask-internal-aoa=true --prop:/sim/rendering/draw-mask-internal-thermal=false --prop:/sim/rendering/draw-mask-internal-ice=false --prop:/sim/rendering/draw-mask-internal-glass=true --prop:/sim/rendering/draw-mask-internal-dead=true --prop:/sim/rendering/draw-mask-internal-reflection=true ``` 然后在游戏内部手动启用2D HUD。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值