美文网首页扣丁学堂Java培训
扣丁学堂Java在线视频之SWT(JFace)体验之图片的动态渐

扣丁学堂Java在线视频之SWT(JFace)体验之图片的动态渐

作者: 994d14631d16 | 来源:发表于2018-06-25 10:44 被阅读2次

    SWT(JFace)体验之图片的动态渐变效果有不少喜欢Java开发或者是正在参加Java培训的小伙伴还不是很清楚,本篇文章扣丁学堂Java培训小编就带大家一起来看一下扣丁学堂Java在线视频之SWT(JFace)体验之图片的动态渐变效果,想要学习的小伙伴随小编一起来吧。

    扣丁学堂Java在线视频

    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

                for(int i=0; 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();

        }

    }

    以上就是扣丁学堂Java在线学习小编给大家分享的SWT(JFace)体验之图片的动态渐变效果,希望对小伙伴们有所帮助,想要学习Java开发的小伙伴可以选择专业的Java培训机构扣丁学堂进行学习。扣丁学堂不仅有专业的老师和与时俱进的课程体系,还有大量的Java在线视频供学员观看学习,小伙伴们快快行动吧。

    相关文章

      网友评论

        本文标题:扣丁学堂Java在线视频之SWT(JFace)体验之图片的动态渐

        本文链接:https://www.haomeiwen.com/subject/qygeyftx.html