八进制

少年壮志无烟抽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  232 随笔 :: 0 文章 :: 3016 评论 :: 11 Trackbacks

覆盖XXXDiagramEditor的configureGraphicalViewer()方法,加入如下代码即可。不过加入背景图片后,网格线无法显示,可能是图层顺序的问题。

/**
 * @generated NOT
 
*/
protected void configureGraphicalViewer() {
    
super.configureGraphicalViewer();

    
//////Background Layer//////////////////
    Layer backgroundLayer = new Layer() {
        @Override
        
protected void paintFigure(Graphics graphics) {
            
super.paintFigure(graphics);
            graphics.drawImage(NetworkDiagramEditorPlugin.getInstance().getBundledImage(
"images/worldmap_no_text.gif"), 0,
                    
0);
        }
    };
    backgroundLayer.setSize(
49902484);
    
////////////////////////////////////////

    DiagramRootEditPart root 
= (DiagramRootEditPart) getDiagramGraphicalViewer().getRootEditPart();
    LayeredPane printableLayers 
= (LayeredPane) root.getLayer(LayerConstants.PRINTABLE_LAYERS);
    FreeformLayer extLabelsLayer 
= new FreeformLayer();
    extLabelsLayer.setLayoutManager(
new DelegatingLayout());
    printableLayers.addLayerAfter(extLabelsLayer, NetworkEditPartFactory.EXTERNAL_NODE_LABELS_LAYER,
            LayerConstants.PRIMARY_LAYER);
    
    
//////Insert Background Layer///////////
    printableLayers.addLayerBefore(backgroundLayer, NetworkEditPartFactory.EXTERNAL_NODE_LABELS_LAYER,
            LayerConstants.PRIMARY_LAYER);
    
////////////////////////////////////////
    
    LayeredPane scalableLayers 
= (LayeredPane) root.getLayer(LayerConstants.SCALABLE_LAYERS);
    FreeformLayer scaledFeedbackLayer 
= new FreeformLayer();
    scaledFeedbackLayer.setEnabled(
false);
    scalableLayers.addLayerAfter(scaledFeedbackLayer, LayerConstants.SCALED_FEEDBACK_LAYER,
            DiagramRootEditPart.DECORATION_UNPRINTABLE_LAYER);
}

参考:为图形编辑器设置背景图片
posted on 2007-03-13 16:25 八进制 阅读(2622) 评论(6)  编辑 收藏 所属分类: EclipseGMF

评论

#1楼  2007-07-31 16:20 小妍 [未注册用户]
刚刚学gmf,对他的架构不了解,不知道代码应该加到哪里,是否可以给些指点?
  回复  引用    

#2楼 [楼主] 2007-07-31 22:44 八进制      
gmf生成的代码基本结构和gef程序代码类似,你可以先熟悉gef和emf,再看就容易多了。
  回复  引用  查看    

#3楼  2007-08-01 15:05 小妍 [未注册用户]
非常感谢你得回帖。以后有好多问题需要向你请教呢,如果可以希望msn联系。
zezhenyan@hotmail.com
  回复  引用    

#4楼  2007-10-26 15:30 老陈 [未注册用户]
我想问问你,GMF开发插件过程中,给UML图(如Class类图,Interface类图)这些图添另阴影效果如何做?
可以创建一个类继承DefaultSizeNodeFigure,然后加入阴影效果的方法吗?
如何做? 下边是我的阴影效果的方法:
protected void fillShape(Graphics graphics)
{
Rectangle r = getBounds();

int shadowDepth = 7;
int rectangleWidth = r.width - shadowDepth;
int rectangleHeight = r.height - shadowDepth;

Color foreground = graphics.getForegroundColor();
Color background = graphics.getBackgroundColor(), shadow = ColorUtilities.darker(foreground);
int x = r.x + shadowDepth;
int y = r.y + shadowDepth;
// trace shadow
for (int i = shadowDepth - 1; i >= 0; i--)
{
shadow = lighter(background, i + 1, shadowDepth + 1);
graphics.setBackgroundColor(shadow);
graphics.fillRectangle(x, y, rectangleWidth, rectangleHeight);
if (i > 0)
{
x--;
y--;
}
}
graphics.setBackgroundColor(background);
graphics.setForegroundColor(foreground);
graphics.fillRectangle(x, y, rectangleWidth, rectangleHeight);
graphics.drawRectangle(x, y - 1, rectangleWidth - 1, rectangleHeight);
}

  回复  引用    

#5楼 [楼主] 2007-10-27 09:25 八进制      
继承DefaultSizeNodeFigure应该可以,但你要修改GMF生成的每个EditPart里原来创建DefaultSizeNodeFigure的地方以使用你自己的MyDefaultSizeNodeFigure。
  回复  引用  查看    

#6楼  2008-08-28 09:37 matengyue [未注册用户]
楼主 !你好 请问 NetworkDiagramEditorPlugin DiagramRootEditPart 类是那个包中的类啊! 我将 代码 粘入 这两类报错。
  回复  引用    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: