Petit problème: De manière à améliorer les perfs d’un rendu cartographique, j’ai besoin de créer des layers… En Swing, pas de problème: on a les JLayeredPane… mais en SWT, que neni!
Alors voici une petite astuce pour créer des images transparentes (les fonds de carte n’ont généralement besoin que d’être calculés qu’une seule fois!)
-
// Définition de LA couleur qui sera considérée comme transparent
-
Color lTransparentColor = Display.getDisplay().getSystemColor(SWT.COLOR_WHITE);
-
// On crée une palette avec la couleur transparente et toutes les autres
-
// couleurs nécessaire à l'image (ici, lOtherColor)
-
PaletteData lPalette = new PaletteData(new RGB[] {
-
lTransparentColor.getRGB(),
-
lOtherColor.getRGB()
-
});
-
-
// Création de l'image avec la palette
-
ImageData lImageData = new ImageData(lWidth, lHeight, 2, lPalette);
-
// Définition de la couleur transparente de l'image (blanc ici)
-
lImageData.transparentPixel = lPalette.getPixel(lTransparentColor.getRGB());
-
-
// Et voilà!
-
lImage = new Image(lDisplay, lImageData);
-
Rectangle lImageBounds = lImage.getBounds();
-
// Le GC qui permet de dessiner dans l'image
-
GC lGc = new GC(lImage);
-
-
// Première étape: remplir totalement l'image d'un fond transparent
-
lGc.setBackground(lTransparentColor);
-
lGc.fillRectangle(lImageBounds);
-
-
// Et maintenant, reste plus qu'à dessiner comme avant dans le GC!
C’est un premier pas vers le dessin en layers… J’y reviendrai un peu plus tard avec une petite lib…




Commentaires
Ecrire un commentaire Trackback