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

AWT/Swing Java Discussion :

Dessiner un contour en dégradé


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut Dessiner un contour en dégradé
    Voilà, dans une application je crée un objet Polygon jaune avec un contour noir qui doit disparaître progressivement vers la gauche.

    Pour l'intérieur, ça va, il me suffit d'attribuer comme "paint" à mon context graphique un GradientPaint de jaune opaque à jaune transparent (alpha = 0), mais pour le contour noir, je ne sais pas comment m'y prendre.

    Merci pour toute aide.

  2. #2
    Membre émérite
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Par défaut
    Citation Envoyé par Sergejack
    Voilà, dans une application je crée un objet Polygon jaune avec un contour noir qui doit disparaître progressivement vers la gauche.

    Pour l'intérieur, ça va, il me suffit d'attribuer comme "paint" à mon context graphique un GradientPaint de jaune opaque à jaune transparent (alpha = 0), mais pour le contour noir, je ne sais pas comment m'y prendre.

    Merci pour toute aide.
    J'imagine que tu possédes un Graphics2D et un Shape décrivant ton polygone.

    Pour l'interieur, tu places ton GradientPaint par Graphics2D.setPaint() puis tu le remplit via Graphics2D.fill( Shape );

    Pour le contour tu places la couleur noir Graphics2D.setColor( Color.BLACK ); puis tu dessines via Graphics2D.draw( Shape );

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par divxdede
    J'imagine que tu possédes un Graphics2D et un Shape décrivant ton polygone.

    Pour l'interieur, tu places ton GradientPaint par Graphics2D.setPaint() puis tu le remplit via Graphics2D.fill( Shape );

    Pour le contour tu places la couleur noir Graphics2D.setColor( Color.BLACK ); puis tu dessines via Graphics2D.draw( Shape );
    Ben non, ça c'est ce que je fais déjà à défaut de mieux, mais le contour devrait être un dégradé lui-même.

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 905
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par Sergejack
    Pour l'intérieur, ça va, il me suffit d'attribuer comme "paint" à mon context graphique un GradientPaint de jaune opaque à jaune transparent (alpha = 0), mais pour le contour noir, je ne sais pas comment m'y prendre.
    Bien il suffit d'utiliser un GradientPaint de noir opaque à noir transparent (alpha = 0) tout simplement. Quel est le probleme ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Pour les contour on ne peut appliquer qu'une couleur apparément et non un paint.

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 905
    Billets dans le blog
    54
    Par défaut
    Pardon ???
    Avec quelle version travaille-tu ? Un contour est une Shape générée par le Stroke pour une forme donnée (la Shape source) et remplie avec la peinture actuelle du Graphics. Et on sait deja que n'importe quel Paint fonctionne pour remplir n'importe quelle Shape :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    package test;
     
    import java.awt.*;
    import java.awt.geom.*;
    import javax.swing.*;
     
    public class Test2D extends JFrame {
     
      public Test2D() {
        super("Test");
        setLayout(new BorderLayout());
        add(new RenderPanel(), BorderLayout.CENTER);
      }
     
      public static void main(String ...args) {
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            Test2D dialog = new Test2D();
            dialog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            dialog.setVisible(true);
            dialog.pack();
          }
        });
      }
     
      private static class RenderPanel extends JPanel {
        private static Stroke STROKE = new BasicStroke(5);
        private static Paint FILL_GRADIENT = new GradientPaint(50, 0, Color.RED, 50, 350, Color.YELLOW);
        private static Paint PAINT_GRADIENT = new GradientPaint(50, 0, Color.YELLOW, 50, 350, Color.RED);
        private Shape circle = new Ellipse2D.Float(50, 50, 350, 350);
     
        public RenderPanel() {
          super();
          setPreferredSize(new Dimension(500, 500));
        }
     
        /** {@inheritDoc}
         */
        @Override protected void paintComponent(Graphics graphics) {
          super.paintComponent(graphics);
          Graphics2D g2d = (Graphics2D) graphics;
          g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
          g2d.setPaint(FILL_GRADIENT);
          g2d.fill(circle);
          g2d.setStroke(STROKE);
          g2d.setPaint(PAINT_GRADIENT);
          g2d.draw(circle);
        }
      }
    }
    Cependant, si ton stroke n'est pas assez épais, combiné avec le fait de ne pas mettre certains indices de rendu, tu peux en effet avoir l'impression que le gradient ne fonctionne pas sur la bordure. MAIS CE N'EST PAS LE CAS ! => N'importe quel Paint fonctionnera sur une bordure.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Très bien dit, bouye, mais il reste un obstacle : comment faire un gradient de l'intérieur vers l'extérieur ? Parce que en passant par un GradientPaint, ça risque d'être super compliqué. Ne vaudrait-il pas mieux redéfinir le stroke ?

    En fait je n'en ai aucune idée, mais ça m'intéresse beaucoup.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  8. #8
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    xavlours> Dans ce cas on c'est un gradient radial que tu cherches, il est introduit dans java 1.6, la librairie batik, (et peut être swing x, j'ai cru voir trainer quelquechose dans ce style au niveau des Painters)

    Ou j'avais fait ça dans un post il y a quelques mois suite à une demande d'argon (on est tous tombé au piège )j'avait fait ceci:
    http://www.developpez.net/forums/sho...9&postcount=15

Discussions similaires

  1. [Débutant] dessiner les contours des régions d'une image
    Par Imène_23 dans le forum Images
    Réponses: 33
    Dernier message: 12/02/2013, 11h03
  2. Dessiner un contour sur une image
    Par tagrawla dans le forum C#
    Réponses: 4
    Dernier message: 27/01/2011, 09h46
  3. Dessin de contours
    Par Otacon87 dans le forum OpenCV
    Réponses: 3
    Dernier message: 18/06/2009, 17h49
  4. Réponses: 5
    Dernier message: 07/12/2006, 00h19
  5. dessiner le contour d'un jpanel
    Par iamspacy dans le forum Composants
    Réponses: 4
    Dernier message: 11/05/2004, 15h11

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