Splash Screen

fmacloud

Mitglied
Hallo ich versuche gerade einen Splash Screen mit SWT zu erstellen. Leider soll das Splash Image nicht einfach eckig sein, sondern abgerundete Ecken haben.

Wenn ich das entsprechende PNG Image lade habe ich das Problem, dass der transparente Bereich des PNG nicht transparent dargestellt wird, sonder grau erscheint. Wenn ich das Image weg lasse, ist die entsprechende Shell transparent (SWT.No_Background).

Wie schaffe ich es nun, die Transparenz des Images zu übernehmen?

Danke,
Frank
 
Such mal hier im Forum da wurde sowas schon angesprochen und der Code dazu bereitgestellt. (zumindest mit der Transparenz)
 
Klar. Ist ziemlich wie die Version aus einem Snippet ... ich glaube 104 ...

Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;


public class Slash {

  public static void main(String[] args) {
    final Display display = new Display();
    final Shell splash = new Shell(SWT.ON_TOP|SWT.NO_BACKGROUND|SWT.NO_TRIM);

    Image image = new Image(display, "examples/splash.gif");
    ImageData imdata = image.getImageData();
    splash.setSize(imdata.width, imdata.height);
    Rectangle splashRect = splash.getBounds();
    Rectangle displayRect = display.getBounds();
    int x = (displayRect.width - splashRect.width) / 2;
    int y = (displayRect.height - splashRect.height) / 2;
    splash.setLocation(x, y);
    splash.open();
    GC gc = new GC(splash);
    gc.drawImage(image, 0, 0);
    
     try {
    	 Thread.sleep(3500);
     } catch (Throwable e) {
     }
    }
}

Funktioniert allerdings auch nur bedingt ... wenn man während des sleep bspw. ein Explorer Fenster hinter das Splash Image zieht, wird die Transparenz nicht aktualisiert.
Wenn jemand nen Verbesserungsvorschlag hat, würde ich mich natürlich freuen.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück