我对Java和SWT非常陌生,希望能将一个图像融合到另一个图像中。我现在在标签中有一张图片(相关代码):
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应用编程接口?
此外,这将是一个幻灯片放映,可能包含数百张照片,只向前移动(永远不会回到以前的图像)-考虑到这一点,为了从内存中删除旧图像,我是否需要明确地做些什么?
谢谢!!
发布于 2010-04-28 00:01:09
据我所知,没有任何swt小部件直接支持这种类型的功能,您最好的选择是扩展org.eclipse.swt.widgets.Canvas,并添加一个可以处理具有不同alpha的2个重叠图像的org.eclipse.swt.events.PaintListener。所以就像这样:
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时,让它得到垃圾回收是不够的。
https://stackoverflow.com/questions/2706310
复制相似问题