L’un des effets graphiques les plus à la mode et les plus apprécié ces derniers temps est le reflet. Ce serait bien dommage de s’en passer pour des applications mobiles.
L’idée est de partir, par exemple, de cette image :

Et d’obtenir le résultat suivant :

Attention, ce code est pour J2ME et privilégie la lisibilité/simplicité, il doit donc absolument être retravaillé/optimisé si vous souhaitez l’utiliser. Vous pouvez d’ailleurs proposer vos améliorations en commentaire.
public class Reflet extends GameCanvas {
private Image img; // L'image initiale
private int heightReflexion = 35; // La hauteur en pixel du reflet
public Reflet(Image img) {
super(false);
this.img = img;
}
public void paint(Graphics g) {
// Dessine l'image initiale
g.drawImage(img, 0, 0, Graphics.LEFT |Graphics.TOP);
// Va contenir le format RAW du reflet
int[] rawInput = new int[heightReflexion * img.getWidth()];
// Stocke dans rawInput les pixels nécessaires pour faire le reflet
img.getRGB(rawInput,
0,
img.getWidth(),
0,
img.getHeight() - heightReflexion,
img.getWidth(),
heightReflexion);
// Le principe est d'afficher ligne par ligne le reflet
// Pour faire l'effet miroir, la 1ere ligne doit s'afficher
// à heightReflexion pixels depuis le bas de l'image initiale,
// la dernière ligne doit s'afficher à 0 pixel depuis le bas
// de l'image initiale
int[] line = new int[img.getWidth()];
for (int i=0; i<heightReflexion; i++) {
// Isole une ligne du reflet
System.arraycopy(rawInput,
i * img.getWidth(),
line,
0,
img.getWidth());
// Pour chaque pixel de la ligne on modifie la transparence
for (int k=0; k<line.length; k++) {
line[k] = (line[k] & 0xFFFFFF) | ((int) ((0x660000) << 8));
}
// Dessine la ligne
g.drawRGB(line, // La ligne à afficher
0, // Pas de offset, affiche la ligne dans son intégralité
img.getWidth(), // Largeur d'une ligne
0, // Position X du reflet
img.getHeight() + heightReflexion - i, // Position Y du reflet
img.getWidth(), // Largeur d'une ligne
1, // Hauteur d'une ligne
true); // Gestion de la transparence
}
} }





Comme quoi on peut aussi faire du graphisme sur les mobiles ! A quand Gimp en ME ?
Du Gimp, n’exagérons pas
Par contre une annonce comme celle-ci, nous fait apparaitre d’énorme possibilité. Bien entendu, avant de s’emballer il faut tester
Ce que je vois d’intéressant, c’est qu’une autre communauté (celle des Flashers) va pouvoir se mettre à développer des applis J2ME, et plus seulement des codeurs purs et durs.