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

 Java Discussion :

Custom cursor déformé


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Custom cursor déformé
    Bonjour,

    J'utilise le code suivant pour modifier le curseur de la souris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Image image = toolkit.getImage("images/cursors/pen.png");
    Cursor c = toolkit.createCustomCursor(image , new java.awt.Point(0, 31), "customCursor");
    setCursor(c);
    Pen.png, c'est ça :

    Nom : KiZF5.png
Affichages : 108
Taille : 287 octets

    Et ça m'affiche ça :
    Nom : RZVSa.png
Affichages : 107
Taille : 9,6 Ko

    Je ne comprend pas vraiment l'origine du problème. J'ai essayé avec différentes dimensions, différentes images et j'ai toujours une image qui est déformée.
    Vous avez une idée du soucis ?

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    C'est un bug de windows qui gère pas la transparence ou quelque chose du genre.

    Essaye de rajouter ceci après avoir chargé ton image : (ici cursorImage est une BufferedImage obtenue avec ImageIO.read())

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    for (int i = 0; i < cursorImage.getHeight(); i++) {
                int[] rgb = cursorImage.getRGB(0, i, cursorImage.getWidth(), 1, null, 0, cursorImage.getWidth() * 4);
                for (int j = 0; j < rgb.length; j++) {
                    int alpha = (rgb[j] >> 24) & 255;
                    if (alpha < 128) {
                        alpha = 0;
                    } else {
                        alpha = 255;
                    }
                    rgb[j] &= 0x00ffffff;
                    rgb[j] = (alpha << 24) | rgb[j];
                }
                cursorImage.setRGB(0, i, cursorImage.getWidth(), 1, rgb, 0, cursorImage.getWidth() * 4);
            }
    Une partie de la transparence va disparaitre mais tu n'auras plus le problème.

    Il y'a peut être une meilleur solution que ce bricolage cependant, mais la je ne vois pas
    (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
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Ouais mais justement, j'ai besoin de la transparence, sinon ça sert à rien. ^^
    Ce que je comprend pas c'est que j'ai l'impression d'être le seul à qui ça pose problème. J'ai cherché sur le net pendant plusieurs heures à propos de ce problème sans trouver quoique ce soit de similaire... A moins qu'il faille utiliser une autre méthode pour modifier le curseur..

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bon, après plusieurs tests, effectivement, le problème vient de la transparence.
    Les pixels avec une opacité différente de 0 ou 100% ne sont pas pris en compte, et sont considérés comme 100% opaques.

    Je vais donc retoucher un peu l'image de façon à avoir quelque chose de propre sans aucun pixel mi-transparent.

    Résolu. Merci beaucoup !

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

Discussions similaires

  1. [ ORACLE ][ STRUTS ] [ JAVA ] maximum open cursor
    Par LoulouFifi dans le forum Struts 1
    Réponses: 21
    Dernier message: 30/03/2011, 11h52
  2. Paramétrage d'un "Custom Cursor"
    Par weebib dans le forum Flex
    Réponses: 1
    Dernier message: 03/12/2009, 17h43
  3. Wait cursor et accessibilité des menus
    Par Depteam1 dans le forum MFC
    Réponses: 3
    Dernier message: 23/09/2004, 19h01
  4. [forms] ref cursor associé à un bloc de données
    Par plaineR dans le forum Forms
    Réponses: 9
    Dernier message: 27/08/2004, 18h26
  5. REF CURSOR... Comment ça marche ?
    Par Patkaza dans le forum SQL
    Réponses: 6
    Dernier message: 28/04/2004, 14h26

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