begin process at 2008 08 28 15:59:18
1 233 191 membres
293 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Utiliser un filtre RGB sur un composant du Look and Feel [ Archives / API ] (peripero)

Utiliser un filtre RGB sur un composant du Look and Feel le 05/04/2006 09:08:13

peripero
Bonjour, J'aimerais simplement savoir s'il etait possible d'utiliser un filtre sur un composant (style combobox) utilisé dans l'UIManager. Si oui, comment??

Re : Utiliser un filtre RGB sur un composant du Look and Feel le 05/04/2006 11:00:44

bloofi
coucou,

si tu as un setColor() qui traine quelque part, tu peux toujours lui balancer une couleur dont tu as définie les rgb que tu veux :
Color pouet = new Color( 255 , 255 , 255 , 0 ) ;//(int r , int g , int b , int alpha)


Re : Utiliser un filtre RGB sur un composant du Look and Feel le 05/04/2006 14:15:25

peripero
En fait, j'ai peint les coins de mon composant dans une couleur créée dans la perspective d'apliquer un filtre dessus. J'ai ensuite fait référence à ce composant dans mon UIManager mais je ne sais pas du tout quelles méthodes utilisées ensuite. J'ai pensé à modifier le paint mais sans résultat

Re : Utiliser un filtre RGB sur un composant du Look and Feel le 05/04/2006 20:09:45

Dobel
Tu veux réaliser un véritable filtrage sur le composant ?

J'ai déjà écrit un truc qui permettait de dessiner sur mon composant avec un ColorSpace perso. En définissant bien le colorspace, ça doit être possible de faire tout type de filtrage RGB.

Si ça correspond à ce que tu cherches, je peux faire un effort pour retrouver ce bout de code

Je ne sais pas si c'est la méthode la plus efficace par contre

Dobel [size=1][Une fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher][/size=1]

Re : Utiliser un filtre RGB sur un composant du Look and Feel le 06/04/2006 08:24:34

peripero
Oui, ca semble bien correspondre. Si tu pouvais retrouver ca dans tes archives j'adhère au fan club direct

Re : Utiliser un filtre RGB sur un composant du Look and Feel le 08/04/2006 22:00:53

Dobel
Salut, désolé d'avoir mis un peu de temps pour répondre.
J'ai refait un exemple adapté de mon code.
Ici, le filtrage consiste à récupérer uniquement la composante rouge du composant, et à la placée sur la composante verte :)
J'ai donc utilisé un ColorSpace à une seule composante

A+




import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
import java.awt.color.ColorSpace;
public class Cadre1
    extends JFrame {
 JPanel contentPane;
  FlowLayout flowLayout1 = new FlowLayout();


//Création d'un JButton filtré : le filtrage se fait dans la méthode paint qu'on redéfini
  JButton jButton1 = new JButton() {  

    //Pour effectuer le filtrage, ce n'est pas fin :
    //J'effectue le dessin sur une BufferedImage ayant le nouveau ColorSpace
    //Puis je dessine la BufferedImage...
    //cf doc :)
    public void paint(Graphics g) {
      MonColorSpace cp = new MonColorSpace();
      ComponentColorModel cm = new ComponentColorModel(cp,false, false, java.awt.Transparency.OPAQUE, DataBuffer.TYPE_USHORT);
      BufferedImage buffered = new BufferedImage(cm, cm.createCompatibleWritableRaster(this.getWidth(), this.getHeight()), false, null);
      super.paint(buffered.getGraphics());
      g.drawImage(buffered, 0, 0, null);
    }

  };
  JButton jButton2 = new JButton();

  public Cadre1() {
    try {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  /**
   * Initialisation du composant.
   *
   * @throws java.lang.Exception
   */
  private void jbInit() throws Exception {
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(flowLayout1);
    setSize(new Dimension(400, 300));
    setTitle("Titre du cadre");
    jButton1.setForeground(Color.orange);
    jButton1.setText("Bouton filtré");
    jButton2.setForeground(Color.orange);
    jButton2.setText("Le même non filtré");
    contentPane.add(jButton1);
    contentPane.add(jButton2);
  }



public static void main(String[] args) {
Cadre1 fenetre = new Cadre1();
fenetre.setVisible(true);
}
}





/**
 * C'est un exemple de ColorSpace à une seule composante.
 * Cette composante est ici définie à partir des valeurs RGB
 * Ici, il s'agit juste la composante rouge qui est récupérée et placée sur la composante verte :)
 */

class MonColorSpace extends ColorSpace {

  private ColorSpace gray;

  public MonColorSpace() {
    super(ColorSpace.CS_GRAY, 1);//le 1 signifie que notre espace de couleur n'a qu'une seule composante (pas besoin de plus!)
    gray = ColorSpace.getInstance(ColorSpace.CS_GRAY);
  }

  public float[] fromCIEXYZ(float[] colorvalue) {
    return gray.fromCIEXYZ(colorvalue);
  }

  //l'unique couleur, crée à partir des valeurs RGB
  public float[] fromRGB(float[] rgbvalue) {
    return new float[] {rgbvalue[0]};
    //Le tableau à une longueur de 1 comme on a qu'une composante
    //étape lente !!!
  }

  public float[] toCIEXYZ(float[] colorvalue) {
    return gray.toCIEXYZ(colorvalue);
  }

  public float[] toRGB(float[] colorvalue) {
    return new float[] {0, colorvalue[0], 0};  //ici, on retourne la valeur RGB qui nous intéresse : tout sur lacomposante verte, rien sur les autres :)
  }

}

Dobel
[Une fois rien, c'est rien; deux fois rien, ce n'est pas beaucoup, mais pour trois fois rien, on peut déjà s'acheter quelque chose, et pour pas cher




Classé sous : composant, utiliser, filtre, rgb, look

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS