首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java SWT -从一个图像到下一个图像的融合(淡入淡出

Java SWT -从一个图像到下一个图像的融合(淡入淡出
EN

Stack Overflow用户
提问于 2010-04-25 05:52:13
回答 1查看 1.2K关注 0票数 1

我对Java和SWT非常陌生,希望能将一个图像融合到另一个图像中。我现在在标签中有一张图片(相关代码):

代码语言:javascript
复制
Device dev = shell.getDisplay();
try {
    Image photo = new Image(dev, "photo.jpg");
} catch(Exception e) { }

Label label = new Label(shell, SWT.IMAGE_JPEG); 
label.setImage(photo);

现在我想让photo以我指定的速度淡入不同的图像。这可以在这里设置吗,或者我需要更深入地研究org.eclipse.swt.graphics应用编程接口?

此外,这将是一个幻灯片放映,可能包含数百张照片,只向前移动(永远不会回到以前的图像)-考虑到这一点,为了从内存中删除旧图像,我是否需要明确地做些什么?

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-28 00:01:09

据我所知,没有任何swt小部件直接支持这种类型的功能,您最好的选择是扩展org.eclipse.swt.widgets.Canvas,并添加一个可以处理具有不同alpha的2个重叠图像的org.eclipse.swt.events.PaintListener。所以就像这样:

代码语言:javascript
复制
addPaintListener(new PaintListener() {
    public void paintControl(PaintEvent e) {
        e.gc.setAlpha(50);
        e.gc.drawImage(image1, 0, 0);
        e.gc.setAlpha(100);
        e.gc.drawImage(image2, 0, 0);
    }
});

在此之后,您只需创建一个线程更改,重新绘制您的画布,并以一定的间隔更改图像/alpha值。

至于你关于从内存中删除Image的问题,这是通过在Image对象上调用dispose()来完成的,在使用swt时,让它得到垃圾回收是不够的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2706310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档