SWT(JFace)体验之图片的动态渐变效果

页面导航:首页 > 软件编程 > Java编程 > SWT(JFace)体验之图片的动态渐变效果

SWT(JFace)体验之图片的动态渐变效果

来源:互联网 作者:脚本宝典 时间:2015-07-30 13:02 【

1.渐变: 复制代码 代码如下: package swt_jface.demo10; import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Image; import org.eclipse.sw

1.渐变:

复制代码代码如下:


package swt_jface.demo10; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.events.PaintEvent; 
import org.eclipse.swt.events.PaintListener; 
import org.eclipse.swt.graphics.Image; 
import org.eclipse.swt.graphics.ImageData; 
import org.eclipse.swt.layout.FillLayout; 
import org.eclipse.swt.widgets.Canvas; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Shell; 
public class AlphaFadeIn { 
    Display display = new Display(); 
    Shell shell = new Shell(display); 
    public AlphaFadeIn() { 

        shell.setLayout(new FillLayout()); 
        final Canvas canvas = new Canvas(shell, SWT.NULL); 

        ImageData imageData = new ImageData("C:/icons/eclipse.jpg"); 
        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; 

        final Image image = new Image(display, imageData); 

        canvas.addPaintListener(new PaintListener() { 
            public void paintControl(PaintEvent e) { 
                e.gc.drawImage(image, 10, 10); 
            } 
        }); 
        shell.setSize(200, 100); 
        shell.open(); 

        while (!shell.isDisposed()) { 
            if (!display.readAndDispatch()) { 
                display.sleep(); 
            } 
        } 
        display.dispose(); 
    } 
    public static void main(String[] args) { 
        new AlphaFadeIn(); 
    } 
}


2.动态

复制代码代码如下:


package swt_jface.demo10; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.events.PaintEvent; 
import org.eclipse.swt.events.PaintListener; 
import org.eclipse.swt.events.ShellAdapter; 
import org.eclipse.swt.events.ShellEvent; 
import org.eclipse.swt.graphics.GC; 
import org.eclipse.swt.graphics.Image; 
import org.eclipse.swt.graphics.ImageData; 
import org.eclipse.swt.graphics.ImageLoader; 
import org.eclipse.swt.layout.FillLayout; 
import org.eclipse.swt.widgets.Canvas; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Shell; 
public class Animations { 

    Display display = new Display(); 
    Shell shell = new Shell(display); 
    public Animations() { 

        shell.setLayout(new FillLayout()); 
        ImageLoader imageLoader = new ImageLoader(); 
        final ImageData[] imageDatas = imageLoader.load("C:/icons/eclipse-ani.gif"); 
        final Image image = new Image(display, imageDatas[0].width, imageDatas[0].height); 
        final Canvas canvas = new Canvas(shell, SWT.NULL); 
        canvas.addPaintListener(new PaintListener() { 
            public void paintControl(PaintEvent e) { 
                e.gc.drawImage(image, 0, 0); 
            } 
        }); 
        final GC gc = new GC(image); 
        final Thread thread = new Thread() { 
            int frameIndex = 0; 
            public void run() { 
                while (!isInterrupted()) { 
                    frameIndex %= imageDatas.length; 
                    final ImageData frameData = imageDatas[frameIndex]; 
                    display.asyncExec(new Runnable() { 
                        public void run() { 
                            Image frame = 
                                new Image(display, frameData); 
                            gc.drawImage(frame, frameData.x, frameData.y); 
                            frame.dispose(); 
                            canvas.redraw(); 
                        } 
                    }); 
                    try { 
                        Thread.sleep(imageDatas[frameIndex].delayTime * 10); 
                    } catch (InterruptedException e) { 
                        return; 
                    } 
                    frameIndex += 1; 
                } 
            } 
        }; 

        shell.addShellListener(new ShellAdapter() { 
            public void shellClosed(ShellEvent e) { 
                thread.interrupt(); 
            } 
        }); 
        shell.setSize(400, 200); 
        shell.open(); 

        thread.start(); 
        while (!shell.isDisposed()) { 
            if (!display.readAndDispatch()) { 
                display.sleep(); 
            } 
        } 
        display.dispose(); 
    } 
    public static void main(String[] args) { 
        new Animations(); 
    } 
}


Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<