java不规则窗体的构建

转载 2007年10月11日 16:10:00
 
不规则窗体的大体构建思路与以前没有什么不同,在这里,我仅陈述在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/下载

MFC实现不规则形状窗口(CF登陆窗口)

1,目标 实现形状不规则的窗口,例如CF登陆窗口。 可以看到,窗口不是死板的矩形,而是带突出带凹陷的不规则形状。 2,原理 查询CWnd接口,有一个叫SetWindowRgn的方法,可以设置窗口显...
  • dpsying
  • dpsying
  • 2013年12月04日 23:22
  • 8294

Swing 不规则窗体的制作

终极解决之道 经过反复的研究探索,终于获得了一个完美的解决方法:不用shape、不用抓图、不用workaround,真正的、彻底的、完全的、随意的在桌面上任意绘图、涂鸦、撒野,真正的属于程序员的Fr...
  • weiioy
  • weiioy
  • 2013年08月23日 19:13
  • 1736

DUILIB创建不规则窗体

声明:原始方法部分已经废弃,现在有更好的办法来实现DUILIB加载PNG图片,为保持学习的渐进性,我还是保留了原始方法部分的博文与代码,大家没有必要看原始部分了,直接看新方法部分吧; 新方法 ...
  • harvic880925
  • harvic880925
  • 2013年05月14日 15:00
  • 8040

java实现不规则窗体

前段时间想弄个不规则窗体,就像游戏启动的那样。于是上网搜了一下,网上说的是用一个com.sun.awt.AWTUtilities类来实现,结果我发现这个类是JDK6里才有的,我用的是JDK1.8,根本...
  • qq_33222871
  • qq_33222871
  • 2016年02月23日 14:28
  • 365

Java创建不规则窗体

用java创建不规则的窗体。使窗体更具有新颖的特点。 java jdk-6u10增加了两个重要的功能:透明窗体和不规则窗体。这两个功能使得swing也可以做出vista下的玻璃效果来了 。 透明窗...
  • wqjsir
  • wqjsir
  • 2011年10月17日 22:25
  • 4974

『Code』Java实现不规则窗体及渐变滚动字幕的源代码

  • 2008年08月18日 16:30
  • 169KB
  • 下载

Java根据图片建立不规则窗体详解

JAVA程序的外表总是一板一眼的,看多了难免审美疲劳,能不能使我们的JAVA程序外观变得更美观更独特呢?答案是肯定的,我们可以让JAVA程序根据图片来生成自定义的不规则窗体。比如下图的这种外观:  ...
  • lygapp
  • lygapp
  • 2014年09月18日 15:26
  • 661

Java根据图片建立不规则窗体详解

import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.Point...
  • zhlechn
  • zhlechn
  • 2013年09月15日 17:43
  • 501

Java俄罗斯方块(不规则窗体)

  • 2015年09月10日 16:23
  • 32.34MB
  • 下载

java 魔力弹球 不规则窗体

  • 2013年03月05日 22:29
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java不规则窗体的构建
举报原因:
原因补充:

(最多只允许输入30个字)