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 :

Bug graphique lors d'un dessin


Sujet :

2D Java

  1. #1
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 347
    Points : 258
    Points
    258
    Billets dans le blog
    1
    Par défaut Bug graphique lors d'un dessin
    Bonjour,

    j'ai un bug graphique quand j'affiche une image noir et blanc avec par-dessus un dégradé de couleurs.

    Voici une capture d'écran avec les couleurs normales :
    Nom : couleusNormales.png
Affichages : 107
Taille : 310,5 Ko

    Et en voici une avec des couleurs buggées
    Nom : couleursBizarres.png
Affichages : 108
Taille : 406,8 Ko

    Voici le code de la méthode qui ajoute le dégradé de couleurs à une image donnée :
    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
     
    // g : destination de dessin, i : image source sur laquelle le dégradé est appliqué, c : couleurs du dégradé, x et y : coordonnées de dessin
      public static void drawAdditionnalGradient(Graphics2D g, BufferedImage i, Color[] c, int x, int y) {
        int w = i.getWidth();
        int h = i.getHeight();
        BufferedImage b0 = DirectBufferIO.createBuffer(w, h, Transparency.TRANSLUCENT, "PaintToolkit.drawAdditionnalGradient,0"); // création des bufferq
        BufferedImage b1 = DirectBufferIO.createBuffer(w, h, Transparency.TRANSLUCENT, "PaintToolkit.drawAdditionnalGradient,1");
        Graphics2D g0 = b0.createGraphics();
        Graphics2D g1 = b1.createGraphics();
     
        int alpha = c[0].getAlpha(); //composante transparence du dégradé, donné par la composante alpha de la première couleur du dégradé
        if (alpha < 255)
          g0.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float)alpha / 255f)); // dessiner en transparent sur g0
        g0.drawImage(i, 0, 0, null); // on dessine l'image i en transparent sur g0
        fillOpaqueGradient(g1, c, new Rectangle(0, 0, w, h)); // créer un dégradé de couleurs opaque dans g1
        b1.getAlphaRaster().setRect(b0.getAlphaRaster()); // la transparence de b1 devient celle de b0, on obtient un dégradé découpé et transparent
        g.drawImage(b1, x, y, null); // dessin du déradé dans la destination 
     
        g0 = null; // vidange mémoire
        g1 = null;
        DirectBufferIO.flushBuffer(b0);
        DirectBufferIO.flushBuffer(b1);
      }
    Je me demande d'où vient ce bug et comment le corriger.
    Le bug apparait sur certaines configurations et pas sur d'autres dans AnAcondA, un logiciel que je développe.
    Si vous voulez l'essayer, vous pouvez le télécharger sur : www.anadoncamille.com
    Si vous voulez voir l'animation qui a créé les deux captures d'écran, démarrez AnAcondA et allez dans Laboratoire -> Recherche -> Causalité -> Multiver
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 624
    Points : 22 972
    Points
    22 972
    Billets dans le blog
    50
    Par défaut
    DirectBufferIO est une classe que tu as créée ou provient d'une bibliothèque de manipulation d'images quelconque ?
    Quel est le modèle de couleurs de chacune des deux images ?
    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

  3. #3
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 347
    Points : 258
    Points
    258
    Billets dans le blog
    1
    Par défaut
    DirectBufferIO est une classe que j'ai créée et qui crée des BufferedImage 32 bits sur le modèle ARGB, comme les images au format png.
    La classe gère aussi la mémoire associée à ces buffers et offre des méthodes pour libérer la mémoire occupée par un buffer.
    La méthode createBuffer crée un buffer avec la méthode GraphicsConfiguration.createCompatibleImage(width, height, transparency) et l"enregistre.
    La méthode flushBuffer libère la mémoire utilisée par le buffer car le garbage collector ne le fait pas correctement.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  4. #4
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 347
    Points : 258
    Points
    258
    Billets dans le blog
    1
    Par défaut SOS
    Y a-t-l quelqu'un qui peut m'aider pour ce bug ?
    Je ne sais pas à qui m'adresser.
    Quelqu'un a une idée ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  5. #5
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2004
    Messages : 472
    Points : 549
    Points
    549
    Par défaut
    Je ne sais pas si c'est lié ou pas.

    https://www.developpez.net/forums/d6...-version-java/

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 624
    Points : 22 972
    Points
    22 972
    Billets dans le blog
    50
    Par défaut
    C'est surtout posté par la même personne... a 9 ans d’écart...
    Donc la tu es en train de lui dire que c'est le même soucis qu'il a déjà corrigé dans son outil il y a 9 ans. Pourquoi pas... mais j'ai un gros doute quand même .

    Franchement je ne sais pas, un soucis avec les pilotes, ou pourquoi pas dans les entrailles de Java2D dans les dernières maj. Est-ce que ça a été teste sur plusieurs ordi et surtout est-ce reproduisible en revenant a du Java2D plus basique (ex: sans sur-couche perso qui empêche de tester ça nous-même).
    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 confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2004
    Messages : 472
    Points : 549
    Points
    549
    Par défaut
    Oui je me souviens très bien, et je l'avais suivi de près.
    C'est juste une piste, peut-être un param de la JVM à bouger, la release note des dernières versions et patch de JAVA à consulter.
    Je suis intéressé par la réponse, si elle existe ! Bon courage.
    Billy

  8. #8
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    avril 2004
    Messages
    3 728
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2004
    Messages : 3 728
    Points : 7 241
    Points
    7 241
    Par défaut
    Bonjour,

    Citation Envoyé par anadoncamille Voir le message
    Le bug apparait sur certaines configurations et pas sur d'autres
    Avant de chercher très loin, il serait peut-être intéressant de savoir ce qui différencie les configurations qui bugguent... non?
    Ou au moins d'avoir quelques informations...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  9. #9
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 347
    Points : 258
    Points
    258
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    oui effectivement c'est bien le même genre de bug que je retrouve 9 ans après le premier post. J'avais pourtant réussi à le corriger en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.setProperty("sun.java2d.d3d", "false");
    Mais là, rien à faire. J'essaie de créer un raccourci avec le paramètre -Dsun.java2d.d3d=false mais la fenêtre d'exécution se referme avant que je puisse voir ce qui fait planter le raccourci. Existe-t-il un moyen pour empêcher la fenêtre d'exécution d'un raccourci .bat de se refermer toute seule sous Windows10 ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  10. #10
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 347
    Points : 258
    Points
    258
    Billets dans le blog
    1
    Par défaut
    J'ai finalement réussi à lancer le raccourci avec le paramètre D3D mais rien n'y fait, le bug est toujours là.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  11. #11
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 347
    Points : 258
    Points
    258
    Billets dans le blog
    1
    Par défaut
    Au secours !!

    Il n'y a rien à faire. Je crois avoir tout essayé : les différents modes de composition d'image d'AlphaComposite, la ligne de commande avec d3d, celle avec opengl, rien n'y fait. Les couleurs sont toujours aussi moches sur ma carte graphique NVidia. Je soupçonne le processeur graphique d'y être pour quelque chose mais je n'ai trouvé aucun paramètre pour y remédier.

    Quelqu'un pourrait-il m'aider ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  12. #12
    Membre actif
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2007
    Messages : 347
    Points : 258
    Points
    258
    Billets dans le blog
    1
    Par défaut
    Raaah !!! J'avais la solution sous le nez depuis le début ! J'ai fait l'erreur de mettre le paramètre de ligne de commande à true alors qu'il fallait simplement le mettre à false. C'est pour ça que ça ne marchait pas. Depuis j'ai relu cette discussion et la précédente et la solution est bien la même : désactiver le pipeline Direct 3D en ajoutant -Dsun.java2d.d3d=false à la ligne de commande. Par contre ça ne marche pas en essayant de désactiver le pipeline alors que le programme fonctionne.

    Merci pour votre soutien.

    Si vous voulez essayer AnAcondA, le logiciel que je développe, voici quelques liens :

    Lien vers la page d'AnAcondA : http://sylv.tournois.free.fr/guide.html

    Téléchargement d'AnAcondA : http://sylv.tournois.free.fr/stat.php

    Vidéo tutoriel d'installation et de démarrage :

    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug graphique lors du redimensionnement auto d'un datagridview
    Par kornetmuse dans le forum Windows Forms
    Réponses: 0
    Dernier message: 14/08/2013, 17h59
  2. Plantage graphique lors de l'éxécution du process "cmd"
    Par HaaaWaaaX dans le forum Langage
    Réponses: 4
    Dernier message: 24/08/2006, 10h02
  3. Gros bug graphique
    Par Myth_Titans dans le forum Matériel
    Réponses: 13
    Dernier message: 15/07/2006, 22h18
  4. [TP] Bug Graphique avec certaines configurations
    Par Ripley dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 29/01/2006, 18h23
  5. [thread]bug graphique?
    Par norkius dans le forum Interfaces Graphiques en Java
    Réponses: 17
    Dernier message: 24/03/2005, 12h25

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