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

2018-06-01 14:02:22 497浏览

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



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



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(); 
    } 
}



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


扣丁学堂微信公众号

【关注微信公众号获取更多学习资料】



查看更多关于“Java开发资讯的相关文章>>




标签: 扣丁学堂Java在线视频 SWT(JFace)体验之图片的动态渐变效果 Java培训 Java基础教程 Java学习视频 Java教学视频 java入门教程 Java教程视频 java在线学习 java在线视频 java在线教程

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号