IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

comment rendre un dessin (graphics) opaque ou non?


Sujet :

2D Java

  1. #1
    HiT
    HiT est déconnecté
    Débutant
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Points : 20
    Points
    20
    Par défaut comment rendre un dessin (graphics) opaque ou non?
    j'ai vu qu il etait possible de rendre opaque des panels (setOpaque(true)).
    Mais comment faire avec des dessins. Par exemple je souhaiterais rendre opaque tout ce qu il y a dans un ovale dessiné comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g2.fillOval(0,0,100,100);
    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 846
    Points : 22 851
    Points
    22 851
    Billets dans le blog
    51
    Par défaut
    En faisant varier le Paint (couleur ou gradient ou texture) associe a ton contexte graphique tu peux faire faire que ton oval soit translucide ou pas.

    Sinon si tu veux faire varier la transparence des objets deja present a l'endroit ou tu dessines ton oval. Il te faut voir du cote des operations de type AlphaComposite. Et faire en sorte que l'alpha de la couleur utilisee pour dessiner l'oval influe sur les couleurs des objets en-dessous.

    La formule montrant comment pour un pixel donne la couleur destination (celle deja presente sur l'image) varie en fonction la valeur RGB et de l'apha de la couleur source (celle utilisee pour peindre l'oval) et en fonction des constantes pre-definies pour chaque type de composite est decrite dans la documentation de la class AlphaComposite.
    Ensuite si tu prend une couleur ARGB source de type (n , 0, 0, 0) pour peindre ton ovale, a priori, seule l'alpha devrait avoir une influence sur la valeur destination.

    Comme ce que j'explique ne doit pas etre tres clair, le mieux est de regarder la demo Java2Demo (demo/jfc/java2D dans le JDK), onglet Composite et d'experienter plusieurs valeurs de couleurs et plusieurs types de composite par toi-meme.

    Note la composite par defaut doit etre SRC_OVER qui indique bien que quand on dessine quelque chose, cela d'affiche audessus de ce qui pre-existe (on dessine la source par dessus la destination).

    PS : repond plutot dans le topic plutot que d'envoyer des MP surtout quand ca a un rapport direct avec le sujet de la discussion car je ne pense pas toujours a regarder ma mail box (cf : intervention precedente sur le zoom).

  3. #3
    HiT
    HiT est déconnecté
    Débutant
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Points : 20
    Points
    20
    Par défaut
    merci de ta reponse qui fonctionne totalement.
    mais je me suis debrouillé autrement parce que à cause d'un nouveau besoin imprévu j'ai du moddifier deux petites choses. Par contre si l'on reste dans le domaine de la transparence, saurais tu comment rendre un background transparent, parce que ca ne marche pas avec les alphacomposite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setBackground(Color.black);
    merci

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 846
    Points : 22 851
    Points
    22 851
    Billets dans le blog
    51
    Par défaut
    Cela depent du type de ton image. Essaie avec BufferedImage.TYPE_INT_ARGB (au lieu de TYPE_INT_RGB).

    En suite je n'ai jamais trop utilise la methode setBackground() du graphics pour ca. soit je parcoure tous les pixels de mon image et les met manuellement a la couleur transparente via setRGB() (en general (0,0,0,0)). Soit j'utilise l'une des methodes de creation qui a ete inspiree par le blog et les posts de Gfx.

    Hum attends que je fouille un peu... voila, quelques chose dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        GraphicsConfiguration configuration = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
        BufferedImage result = configuration.createCompatibleImage(width, height, transparency);
    Avec transparency a l'une des valeurs suivantes :

    - Transparency.BITMASK
    - Transparency.OPAQUE
    - Transparency.TRANSLUCENT

Discussions similaires

  1. [AC-2007] Comment rendre la saisie dans un champ non obligatoir
    Par ellyam dans le forum Access
    Réponses: 1
    Dernier message: 23/05/2012, 12h35
  2. [WD15] Comment rendre la saisie dans un champ non obligatoir
    Par ellyam dans le forum WinDev
    Réponses: 7
    Dernier message: 23/05/2012, 12h28
  3. Réponses: 3
    Dernier message: 30/09/2008, 11h28
  4. Comment rendre un input de type checkbox non modifiable
    Par beeboo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/08/2008, 13h54
  5. Comment rendre un élément d'une ComboList non visible?
    Par The eye dans le forum Windows Forms
    Réponses: 10
    Dernier message: 18/01/2007, 00h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo