080116.GefPractice.[ali.背景图片]

两个说明
1.修改这个文件
src\com\example\ui\PracticeEditor.java\
2. 图片是C:\bg.jpg

link
file: D:\GMF Progress\blog\GefPractice.[ali.背景图片].rar

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”)

posted @ 2008-01-16 15:02  zhanglei.pku  阅读(317)  评论(0编辑  收藏  举报