源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-03-05 16:36 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:SWT(JFace)体验之图片的动态渐变效果
1.渐变:
[u]复制代码[/u] 代码如下:
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.动态
[u]复制代码[/u] 代码如下:
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();     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部