URN Logo
UNIX Resources » Linux » China Linux Forum » Java&jsp技术 » 第2页 » swt和界面半透明效果,求助
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.com
  LinuxForum General Chat
  Linux Advocacy
  LinuxForum Polls
  Introductions
  Linux Kernel Support
  Patch Management
  Development Release
  Linux Programming
  Linux Security
  Linux Software
  Linux Hardware Problems
    Linux Video Problems
    Linux Sound Problems
  Linux Networking Support
  Linux Printing Support
  Linux Human Interface Devices Support
  Linux Data Storage Support
  Linux Applications Support
  Linux Installation Support
  Linux Laptops Support
  Linux Motherboard, Chipsets, CPU, Memory
  Miscellaneous
  Debian Linux Support
  Ubuntu Linux Support
  LiveCD Discussions
  Gentoo Linux Support
  Mandrake Linux Support
  Redhat / Fedora Linux Support
  Slackware Linux Support
  SuSE Linux Support
  CentOS Linux Support
  Linux Web Servers
  Linux DNS Servers
  Linux Database Servers
  Linux Email Servers
  Linux FTP Servers
  Linux Squid Proxy Server
  Linux Samba Help
  Linux cPanel Help
  Linux Ensim Help
  Linux Plesk Help
  Linux Webmin / Usermin Help
  Qmail Toaster Help
  Linux Games
  Windows Game Emulation
  Linux Discussions
  General Linux Discussions
  Red Hat Linux Discussions
  More Red Hat Linux Discussions
  Mandrake Linux Discussions
  Slackware Linux Discussions
  SuSE Linux Discussions
  Debian Discussions
  Samba Help
  Linux Security
  Linux Networking
  Gentoo Help
  Operating System Rant Forum
  Hardware Rants
   
swt和界面半透明效果,求助
Author: sword2k    Posted: 2005-12-01 08:30    Length: 2,774 byte(s)
[Original] [Print] [Top]
使用SWT开发用户界面,试图做到半透明效果。自绘界面,绘制时调整alpha值。

然而,发现很难做到。

1、窗口半透明:
为shell编制 paintlistener,读取图片,设定alpha为100,无法半透明。怀疑shell首先用背景颜色绘制后才调用自定义的paintlistener。怎么做呢?

2、窗口半透明之二:
使用一个canvas覆盖界面,发现可以做到半透明,具体测试见问题3描述。但是此时拖拽改变窗口位置,界面没有重新绘制。如果改变大小则屏幕开始混乱。

3、控件半透明:
控件半透明可以实现,但经过测试,控件绘制选择alpha之后,swt似乎简单的取出被本窗口覆盖的那部分屏幕区域为基础,然后绘制控件。而对于本窗口内部各个控件之间的覆盖关系完全不考虑,上层控件还是使用窗口背后的屏幕图像,而不考虑被覆盖的控件,被覆盖掉的控件就不能半透明看到。界面还是不正常。

求助!谢谢各位啦!!以下是问题2的程序代码,这里如何贴图啊?我的描述恐怕不清楚。

import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;

public class Talpha {


public static void main(String[] args) {
// TODO Auto-generated method stub
final Display display = new Display();
final Shell shell = new Shell(display);

Canvas canvas = new Canvas(shell, SWT.NO_BACKGROUND);
//使用paintlistener,保证每次均重新绘制。
canvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
GC gc = e.gc;
//读图像
ImageData imageData = new ImageData("imgs/pt.jpg");
//这里是建立从左到右的渐进Alpha。
byte[] alphaValues = new byte[imageData.height * imageData.width];
for (int j = 0; j < imageData.height; j++) {
for (int i = 0; i < imageData.width; i++) {
alphaValues[j * imageData.width + i] = (byte) (255 - 255
* i / imageData.width);
}
}
imageData.alphaData = alphaValues;
Image image = new Image(display, imageData);
//绘制
gc.drawImage(image,0,0);
}
});

FillLayout fillLayout = new FillLayout();
fillLayout.type = SWT.VERTICAL;
shell.setLayout(fillLayout);
shell.setSize(200, 600);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}

}
--
Attached file: 589659-2-r.JPG
[Original] [Print] [Top]
« Previous thread
"试用NetBeans,赢取iPod" -- 2006-Q1版
Java&jsp技术
2
Next thread »
借贵地问一个javascript问题:怎样从FRAME外部访问FRAME中的元素?
     

Copyright © 2018 UNIX Resources Network, All Rights Reserved.    About URN | Privacy & Legal | Help | Contact us