SWT實現透明背景程式碼
阿新 • • 發佈:2019-02-05
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(); } }