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

Langage Java Discussion :

Dessin java 2D ( problème avec setClip() )


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut Dessin java 2D ( problème avec setClip() )
    Bonjour à tous, j'ai un petit soucis en java
    je voudrais découper une zone (de forme rectangulaire ou circulaire ) d'une image et l'afficher dans un JPanel

    J'y arrive avec la méthode setClip(...) mais le problème avec cette dernière est qu'elle enlève l'antialising et ce Jpanel ne peut plus être recouvert par un autre Jpanel ( dans le cas par exemple d'un JSplitPane ) en bref la méthode setClip me pose un tas d'autres problème

    Quelqu'un pourrait-il SVP m'aider à sélectionner la zone d'une image (forme RoundRectangle ) sans passer par cette méthode ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    T'aurais pas un petit bout de code pour tester ca par hasard ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    J'ai retrouvé un bout de code qui ressemble un peu à ce que tu veux. J'utilise l'antialiasing dedans. Je sais pas s'il est réellement activé mais je poste quand même :
    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
    protected void paintComponent(Graphics g) {
            // comme le composant n'est pas peint partout
            //  et qu'on modifie sa zone dessinable, on peint
            //  le composant avec la couleur du container parent
            int w = getWidth(), h = getHeight();
            Color parentBackground = getParent().getBackground();
            g.setColor(parentBackground);
            g.fillRect(0, 0, w, h);
            Graphics2D g2d = (Graphics2D)g;
            RenderingHints renderHints =
                new RenderingHints(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
                renderHints.put(RenderingHints.KEY_RENDERING,
                RenderingHints.VALUE_RENDER_QUALITY);
            g2d.setRenderingHints(renderHints);        
     
     
            int round = (w > h ? h : w)/10;
            if(bordure){
                g.setColor(Color.black);
                g.drawRoundRect(4, 4, w -9 , h-5,(int)(round*1.2),(int)(round*1.2));
            }
            /*Initial Graphics clip is the full bounds of the component:
             *create a rounded clip LARGER than the compolor.r*/
            RoundRectangle2D.Float r2d =
                new RoundRectangle2D.Float(
                        5, 5, w -10 , h-6, round, round);        
            /*intersect this with the existing clip*/
            g2d.clip(r2d);        
            super.paintComponent(g);
        }

Discussions similaires

  1. Java Android probléme avec R.Layout
    Par Invité dans le forum Composants graphiques
    Réponses: 10
    Dernier message: 23/05/2011, 16h22
  2. Java regex problème avec caratère @
    Par vert dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 09/12/2010, 11h15
  3. [Java 3D] Problème avec Behavior
    Par guitio2002 dans le forum 3D
    Réponses: 1
    Dernier message: 09/08/2009, 19h46
  4. Java Beans : problème avec l'instance ou le package
    Par Baratribord dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/05/2008, 16h18
  5. divers problème avec Java et jdbc
    Par chti_juanito dans le forum JDBC
    Réponses: 28
    Dernier message: 31/10/2005, 16h54

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