java不规则窗体的构建

 
不规则窗体的大体构建思路与以前没有什么不同,在这里,我仅陈述在java中怎样实现它。本次内容在eclipse平台下开发,需要swt 的插件,可以到swt的官方网站www.swt-designer.com去下载。
先说一下思路吧:先加载一幅图片,这幅图片具有不规则特性,然后将这幅图片设置为窗体的背景,这样就算完蛋。
 加载图片靠以下代码来完成
public Image getImage(Display display){
       InputStream is = ImageLoad.class.getResourceAsStream(this.IMAGE_NAME);
       Image result = null;
        try {
            if (is != null) {
                ImageData imageData = new ImageData(is);
                if (imageData != null) {
                   result = new Image(display, imageData);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(is != null)
                    is.close();
            } catch (IOException e1) {
             e1.printStackTrace();
            }
        }
        return result;
    }
其中,ImageLoad.class.getResourceAsStream(this.IMAGE_NAME)ImageLoad为方法所属的类,this.IMAGE_NAME为图片的名称。这样就返回一个图片。
设定窗体的背景图片则靠以下代码来实现:
//加载图片
       image = new ImageLoad().getImage(display);
       //region代表区域,以下代码要求构造区域
       Region region = new Region();
       imageData = image.getImageData();
       //区分imageα还是β像素
       if (imageData.alphaData != null) {
           for (int y = 0; y < imageData.height; y++) {
              for (int x = 0; x < imageData.width; x++) {
                  if (imageData.getAlpha(x, y) ==255) {
                     region.add(imageData.x + x,imageData.y + y,1,1);
                  }
              }
           }
       } else {
           ImageData mask = imageData.getTransparencyMask();
           for (int y = 0; y < mask.height; y++) {
              for (int x = 0; x < mask.width; x++) {
                  if (mask.getPixel(x, y) !=0 ) {
                     region.add(imageData.x + x,imageData.y + y,1,1);
                  }
              }
           }
       }
       shell.setRegion(region);
       shell.setSize(imageData.x + imageData.width, imageData.y
              + imageData.height);
注释中的详解已经解释得比较明白了,我就不多说了。不规则窗体就这样构建完毕。但是还需要给窗体设定窗体拖拽重绘制的功效,这样才能实现一般窗体的功能,这就需要你对shell窗体添加一些监听器,用于处理窗体重绘、鼠标拖拽、窗体关闭的事件方法。
源代码可以到http://download.csdn.net/user/lejuo/下载
阅读更多
个人分类: EclipseRCP/SWT/JFace
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭