zoukankan      html  css  js  c++  java
  • 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”)

    如果觉得本文内容有帮助:试试我开发的Android应用 应用计时折扣君推荐+1(需登录)

  • 相关阅读:
    Mac OS 下包管理器 homebrew的安装
    草根程序员八年百万年薪之路
    div隐藏滚动条,仍可滚动
    感觉身体被掏空by彩虹室内合唱团
    添加bash命令
    mysql性能优化
    PHP变量存储结构
    轻量级MVC框架(自行开发)
    一致性hash算法之php实现
    redis安装
  • 原文地址:https://www.cnblogs.com/bjzhanghao/p/431774.html
Copyright © 2011-2022 走看看