文档章节

GMF之Shapes实例Part2:设置背景图片或背景色

双子座
 双子座
发布于 2011/08/24 16:58
字数 280
阅读 723
收藏 2

1、在org.eclipse.myTest.shapes.diagram工程下的icons文件夹下新建一个文件件custom,将我们用作背景的图片放进去,本例中用的是background.jpg,之后,在Eclipse中刷新org.eclipse.myTest.shapes.diagram工程。

2、在org.eclipse.myTest.shapes.diagram工程的org.eclipse.myTest.shapes.diagram.part包下新建类BackGroundLayer.java,代码如下:

package org.eclipse.myTest.shapes.diagram.part;

import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.FreeformLayer;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;

public class BackGroundLayer extends FreeformLayer {
    public static final String BACK_GROUND_LAYER = "Back ground Layer";
    private static final ImageDescriptor descriptor = ShapesDiagramEditorPlugin
            .findImageDescriptor("icons/custom/background.jpg");
    private static final Image originalImage = descriptor.createImage();
    public BackGroundLayer() {
        setOpaque(true);
    }

    @Override
    protected void paintFigure(Graphics graphics) {
        if (isOpaque()) {
            graphics.setForegroundColor(ColorConstants.white);
            graphics.setBackgroundColor(ColorConstants.white);
            graphics.fillGradient(getBounds(), true);
            graphics.setAlpha(100);// 设置透明度,背景还是颜色浅一点比较好
            graphics.drawImage(originalImage, new Point(0, 0));
        }
    }
}

3、在org.eclipse.myTest.shapes.diagram.part包下的ShapesDiagramEditor.java中的configureGraphicalViewer()的最后添加代码,如下:

//设置背景颜色
//getGraphicalViewer().getControl().setBackground(ColorConstants.orange);

//设置背景图片
DiagramRootEditPart root = (DiagramRootEditPart) getDiagramGraphicalViewer()
        .getRootEditPart();LayeredPane printableLayers = (LayeredPane) root
        .getLayer(LayerConstants.PRINTABLE_LAYERS);
BackGroundLayer backgroundLayer = new BackGroundLayer();
printableLayers.addLayerBefore(backgroundLayer,
        BackGroundLayer.BACK_GROUND_LAYER, LayerConstants.PRIMARY_LAYER);

效果图如下:

但是,如果背景图片比较大,运行会比较缓慢,在接下来的例子里不使用背景图片。

程序代码请见我的代码分享http://www.oschina.net/code/snippet_164134_5913

© 著作权归作者所有

双子座
粉丝 540
博文 78
码字总数 61009
作品 0
南京
程序员
私信 提问
GMF之Shapes实例Part6:给结点添加图片并实现保存

之前给结点设置图片都不能保存,下次打开后还是原来的图片。接下来就是实现永久保存,其实就是给Shape结点所对应的模型元素添加一个属性ID,这个ID的值在创建模型时确定,并且,我们选择图片...

双子座
2011/10/06
505
0
GMF中设置Base Package

你好,我想问你一个问题,你写的GMF之Shapes实例Part6,这个部分里面有: 2. 保存shapes.ecore_diagram,删除shapes.genmodel,重新创建一个shapes.genmodel,类似GMF之Shapes实例Part1中,别...

lovewbo
2012/03/27
142
2
C# 填充Excel图表、图例背景色

填充背景色,一般可以选择多种不同样式来填充背景,包括填充为纯色背景、渐变背景、图片背景或者纹理背景等。下面的内容将分别介绍通过C#来设置Excel中图表背景色、以及图表中的图例背景色的...

E-iceblue
04/02
0
0
GMF之Shapes实例Part1:创建一个GMF项目

接触GEF与GMF有一段时间了,感觉它们的功能还是很强大的,只是我学的比较慢。也许每个人的学习方法不一样,我比较习惯做简单的例子。今天下午也不干活了,写几篇关于GMF入门的博客。以后有时...

双子座
2011/08/24
1K
13
FloatingActionButton动态更换背景色

版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/186 FloatingActionButton 动态更换背景色 最近碰到了个需求场景,需要动态切换Floatin...

xing_star
08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
20分钟前
5
0
jQuery load() 方法实现加载远程数据

jQuery load() 方法是简单但强大的 AJAX 方法。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。 语法: $(selector).load(URL,data,callback);必需的 URL 参数规定您希望加载的...

前端老手
21分钟前
3
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
29分钟前
9
0
怎样在磁盘上查找MySQL表的大小?这里有答案

我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应...

Linux就该这么学
54分钟前
5
0
Redis

一、Redis支持的几种数据类型:字符串、List、SET、HASH、ZSET 二、Redis的缓存技术主要是为了降低关系数据库的负载并减少网站成本 三、在Redis里面,被MULTI命令和EXEC命令包围的所有命令会...

BobwithB
56分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部