GEF常见问题1:为图形编辑器设置背景图片

GEF的RootEditPart对应的Figure是一个由多个Layer组成的 LayeredPane,每个Layer负责包含不同类型的图形元素,如节点、连接、网格线等等。所以要让图形编辑器显示一个图片作为背景,可以在它们其中一个层里绘制这个图片,也可以添加一个层专门放置背景图片。我推荐使用后者,以下代码是在前面的GefPractice项目基础上做了简单修改得到的:

static  Image BG_IMAGE = new  Image( null , " c:\\bg.jpg " );

protected   void  configureGraphicalViewer() {
    
super .configureGraphicalViewer();
    getGraphicalViewer().setRootEditPart(
new  ScalableFreeformRootEditPart() {
        
        
// 覆盖ScalableFreeformRootEditPart的createlayers方法以便增加自己的层
         protected   void  createLayers(LayeredPane layeredPane) {
            Layer layer 
=   new  FreeformLayer() {
                
protected   void  paintFigure(Graphics graphics) {
                    
super .paintFigure(graphics);
                    
// 在层上绘制图片,也可以绘制其他图形作为背景,GEF的网格线就是一例
                    graphics.drawImage(BG_IMAGE, 0 , 0 );
                }
            };
            layeredPane.add(layer);
            
super .createLayers(layeredPane);
        }
    
    });
    getGraphicalViewer().setEditPartFactory(
new  PartFactory());
}

这样得到的背景图片只显示编辑器可见区域的部分,也就是会随滚动条滚动,见下图。


具有背景图片的图形编辑器

工程下载(背景图片名为“c:\bg.jpg”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值