WEB开发网
开发学院软件开发Java 定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ... 阅读

定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP 界面

 2010-04-26 00:00:00 来源:WEB开发网   
核心提示: SWT 中有很多种方法得到 ImageData 实例,可以通过 ImageData 的构造函数初始化一个 ImageData 实例;也可以通过 ImageLoader 来得到 ImageData 实例;还可以通过已有的 Image 对象来获得,定制 SWT/RCP 界面:如何编写一个漂亮的 SW

SWT 中有很多种方法得到 ImageData 实例。可以通过 ImageData 的构造函数初始化一个 ImageData 实例;也可以通过 ImageLoader 来得到 ImageData 实例;还可以通过已有的 Image 对象来获得。

通过图片可以获得如下窗体外形:

图 8. 图像外形多边形窗口
定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP 界面

清单 6. 示例全部代码

 private static Region getBackRegionFromImage(Display display, String image){ 
  ImageLoader loader = new ImageLoader(); 
  ImageData[] imageData = loader.load(image); 
  Region region = new Region(display); 
  ImageData data = imageData[0]; 
  ImageData mask = data.getTransparencyMask(); 
  Rectangle pixel = new Rectangle(0, 0, 1, 1); 
  for (int y = 0; y < mask.height; y++) { 
    for (int x = 0; x < mask.width; x++) { 
      if (mask.getPixel(x, y) != 0) { 
        pixel.x = data.x + x; 
        pixel.y = data.y + y; 
        region.add(pixel); 
      } 
    } 
  } 
  return region; 
 } 
 public static void main(String[] args) { 
  String backImage="icons/back.gif"; 
  final Display display = new Display(); 
  final Shell shell = new Shell(display, SWT.NO_TRIM | SWT.ON_TOP); 
  // 
  Region region = getBackRegionFromImage(display, backImage); 
  // 
  shell.setRegion(region); 
  Rectangle size = region.getBounds(); 
  shell.setSize(size.width, size.height); 
  // 
  ImageLoader loader = new ImageLoader(); 
  ImageData[] imageData = loader.load(backImage); 
  Image image = new Image(null, imageData[0]); 
  shell.setBackgroundImage(image); 
  // 
  shell.open(); 
  while (!shell.isDisposed()) { 
    if (!display.readAndDispatch()) 
      display.sleep(); 
  } 
  image.dispose(); 
  region.dispose(); 
  display.dispose(); 
 } 

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:定制 SWT RCP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接