1. Hast du auch verifiziert, dass das gif einen transparenten (nicht weißen) Bereich hat? Nur zur Sicherheit...
2. Wie erzeugst du das Bild?
1. das bild ist ein transparentes Bild.
2. das bild wird ungefähr so erzeugt. Ich hab das code von java2s. und ich nehme mal an, dass ich den rest von jedem gezeichnetem bild mit dem hintergrund von meinem display zeichen sollte.
[HIGHLIGHT="Java"]
public Animations() {
shell.setLayout(new FillLayout());
ImageLoader imageLoader = new ImageLoader();
final ImageData[] imageDatas = imageLoader.load("java2s.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 {
// delay
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();
// Set up the event loop.
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
// If no more entries in event queue
display.sleep();
}
}
display.dispose();
}
[/HIGHLIGHT]