SWT实现透明背景代码
来源:互联网 发布:网络使用调查问卷 编辑:程序博客网 时间:2024/04/29 17:54
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 { /** * @param args */ 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("t.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(); } }