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

Qt Discussion :

[Exercice Qt] Color picker, deuxième partie lancée !


Sujet :

Qt

  1. #21
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Hello,

    Par curiosité, savez vous comment je pourrais vérifier que mon widget affiche bien toute la plage de couleur disponible ???
    Pour reprendre le screen de gbdivers, que toutes les nuances de rouges sont affichées et disponibles pour l'utilisateur.
    Qu'il soit fait à la main ou pas .... Pour moi cette question reste entière.

    a plus

  2. #22
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par kaymak Voir le message
    Hello,

    Par curiosité, savez vous comment je pourrais vérifier que mon widget affiche bien toute la plage de couleur disponible ???
    A l'instinct ?
    Je ne pense pas qu'il y ai vraiment de solution miracle....

  3. #23
    Membre actif
    Avatar de GreatTux
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 77
    Points : 287
    Points
    287
    Par défaut
    Tu peux afficher les valeurs RGB ou HSV sur la sortie standard et vérifier les valeurs de tes "cas limites"; si tu es parti sur un format carré tu devrais pouvoir vérifier la valeur des couleurs aux angles de ton widget, c'est déjà une bonne indication.
    Nokia certified Qt developer
    Mon profil Linkedin

  4. #24
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    De toute façon mes dégradés ils ont une vieille tronche.... alors je verrais plus tard pour vérifier.

  5. #25
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Par contre, ça serait bien peut être de pouvoir aussi choisir les nuances plus claires (du vert vers le blanc)
    Ba j'y travaille... Mais euh... Comment fait-on ? Moi j'arrive avec une valeur de 255 je ne peux pas allez au dessus. Je modifie le taux de saturation compris entre 0 et 360 ? Il faut des pistes.

  6. #26
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    @Abdelite

    Il suffit de modifier le 3ème paramètre.

    Je suppose que tu fais une boucle pour aller de ta couleur jusqu'à la luminence minimale ? (tu dis que tu utilises la saturation mais dans ce cas, tu aurais une image blanche pour S=0)

    Par exemple, en partant du rouge (HSV : 0, 255, 255), tu vas au noir en diminuer la luminence (HSV : 0, 255, 0). Pour aller jusqu'au blanc, il suffit d'aller du rouge (HSV : 0, 255, 255) au blanc (HSV : 0, 0, 255).

    (PS : le modèle HSV est expliqué dans la doc de QColor)

    Sinon, avec l'encodage RGB, il suffit également d'aller du rouge (RGB : 255, 0, 0) au blanc (RGB : 255, 255, 255) ou au noir (RGB : 0, 0, 0)


    @kaymak

    Il manque une information importante pour te dire si ton widget affiche bien toute les nuances de gris... les dimensions de ton widget

    Tu imagines bien que si ton widget fait 10 pixels de large, tu ne pourras pas tout afficher.

    Pour aller du noir (RGB : 0, 0, 0) au rouge "pur" (RGB : 255, 0, 0) puis au blanc (RGB : 255, 255, 255), il te faudra 256+255 valeurs différentes, soit 511 pixels minimum pour un widget en ligne ou 256x256 pixels pour un widget carré. Ensuite à toi de voir si tu passes bien par toutes les valeurs possibles (en utilisant la méthode de GreatTux par exemple)


    @Abdelite

    Un petit curseur pour visualiser où l'on clique ?

  7. #27
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    @gbdivers,

    Ah super merci! Je vais regarder cela, la méthode greatTux.
    Pour les dimensions, j'y avais très très vaguement pensé mais j'avais surtout des problèmes d'aspects.
    Heureusement j'ai pu le régler en utilisant le bon mode de painter :ouf:

    Par contre j'ai fais des recherches pour additionner(?) plusieurs couleurs de pixels.
    Brefs sélectionner une zone et en ressortir une couleur moyenne, mais tout ce que j'ai pu trouver ce sont des pages webs qui parle de faire un AND.
    Cependant quand je fais un
    Qrg x = Qrgb Y & QRgb T;
    Le compilo me balance une erreur.... J'imagine que l'opérateur n'est pas supporté pour ce type (en fait je ne sais même pas si ma syntaxe est correct en cpp).

    Sans me donner la réponse, vous autres, avez vous trouvé la méthode ?

    En même temps je me demande si c'est bien la bonne méthode car j'ai de grosses variations de couleurs d'un click à l'autre sur la même zone et donc un AND me semble peu approprié (un AND rouge + noir ça me semble pas tout à fait être une moyenne visuel des deux).
    Enfin bref je patoge là : /

    Jtg, je retourne googler ; )

    a plus merci

  8. #28
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    J'utilise les gradients (obligatoire pour changer la couleur principale dynamiquement)
    tu superpose plusieurs gradient?

  9. #29
    Invité
    Invité(e)
    Par défaut
    Merci gbdivers, j'avais oublié la doc

    Voilà ce que ça donne pour moi :



    Bon maintenant j'améliore le code, j'optimise, je rajoute des fonctionnalités, etc...
    Images attachées Images attachées  

  10. #30
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    @Yan
    tu superpose plusieurs gradient?
    Oui

    @kaymak

    Qrg x = Qrgb Y & QRgb T;
    QRgb est une structure minimaliste. Utilise plutôt QColor.
    Tu trouveras dans la doc la liste des opérateurs supportés (pour QColor, que ==, = et !=)

    Pour "l'addition" de deux couleurs, le mieux est de travailler composante par composante et d'appliquer une opération mathématique quelconque de façon à ce que le résultat soit entre 0 et 255 (ou 0.0 et 1.0 en qreal). Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x.setRed( y.red() + z.red() );   // attention : non normalisé entre 0 et 255
    Ensuite, à toi de voir quelle opération utilisée (je ne connais pas la réponse, je ne fais pas comme ça)

  11. #31
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas si c'est un bug... Afficher le résultat de ce code (un QString) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QColor::fromHsl(65, 98, 255).name()
    Bug ? Pas bug ? Très moche en tout cas. Vous en pensez quoi ?

    En attendant moi j'ai un truc fonctionnel optimisé et tout... mais je vais quand même amélioré mon gradient pour avoir la position du curseur.

    Images attachées Images attachées  
    Dernière modification par Invité ; 24/08/2010 à 16h17.

  12. #32
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Abdelite Voir le message
    Bug ? Pas bug ? Très moche en tout cas. Vous en pensez quoi ?
    j'ai pas compris ce qui te pose problème

  13. #33
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par yan Voir le message
    j'ai pas compris ce qui te pose problème
    C'est quoi le QString qu'on te retourne ?

  14. #34
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    C'est la valeur de ta couleur, codée en RGB en hexadécimal #RRGGBB

  15. #35
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    C'est la valeur de ta couleur, codée en RGB en hexadécimal #RRGGBB
    En effet et bien elle retourne #ffffff, même chose pour QColor::fromHsl(65, 94, 255).name(), QColor::fromHsl(63, 58, 255).name(), etc...
    Dernière modification par johnlamericain ; 19/08/2011 à 22h53.

  16. #36
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    En effet et bien elle retourne #ffffff, même chose pour QColor::fromHsl(65, 94, 255).name(), QColor::fromHsl(63, 58, 255).name(), etc...
    Lorsque le dernier paramètre (la luminence) est au maximum, la couleur est blanche, quelque soit les autres paramètres. Convertie en RGB, ça donne toujours #ffffff (blanc)

  17. #37
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Lorsque le dernier paramètre (la luminence) est au maximum, la couleur est blanche, quelque soit les autres paramètres. Convertie en RGB, ça donne toujours #ffffff (blanc)
    Pourtant ce n'est pas du blanc ! Ce sont bel est bien des variantes différentes de couleurs qui ont une leur luminence au max...

  18. #38
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Non, c'est bien du blanc et il n'y a qu'un seul blanc.

    Regarde les formules de conversion sur wiki : http://en.wikipedia.org/wiki/HSL_and_HSV#From_HSL
    Pour L=1, quelque soient H et S :
    C = 0
    X = 0
    (R1, G1, B1) = (0, 0, 0)
    m = L = 1
    (R, G, B) = (1, 1, 1)

    Ton erreur est de penser 1 couleur HSL = 1 couleur RGB et vice versa. Or ce n'est pas le cas (on dit, de mémoire de mes cours de math, que la transformation entre les 2 espaces HSL et RGB n'est pas bijective)

  19. #39
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Enfin la version QML qui fonctionne... relativement dur (beaucoup plus qu'en C++ mais je connais très mal le QML)



    Le plus compliqué est le transfert des paramètres (couleur principale en entrée, couleur sélectionnée en sortie) entre le QML et le C++ (application C++ utilisant QDeclarativeView pour afficher le QML ; peut être que c'est plus simple si l'application est entièrement en QML)

    Si quelqu'un me dit que c'est pas original, je mors
    (plusieurs heures pour réussir à faire fonctionner la gestion de la couleur sélectionnée)
    Images attachées Images attachées  

  20. #40
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bon, allez. Dernier screenshot...

    Puisqu'on m'accusait de ne rien faire d'original, voici un colorpicker en 3d (différentes vues) !



    Je m'amuse beaucoup avec cet exo (mais je vais me faire gronder par dourouc05 et johnlamericain si je retourne pas bosser sur les traductions et autres)
    Images attachées Images attachées  

Discussions similaires

  1. Color picker et dessin
    Par ediurne dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 23/05/2010, 18h26
  2. exemple color picker / roue chromatique
    Par korsakoff69 dans le forum DirectX
    Réponses: 1
    Dernier message: 16/01/2010, 10h28
  3. Controle: "Color picker"
    Par G_Kill dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/03/2007, 14h14
  4. Colorer une certaine partie du texte en console
    Par Geoff-sk8 dans le forum C
    Réponses: 9
    Dernier message: 14/01/2006, 19h40
  5. Mon alarme, deuxième partie!
    Par yongblood dans le forum Langage
    Réponses: 5
    Dernier message: 17/10/2005, 08h57

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