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 :

Récupérer une couleur à une position d'un QGradient [2D/3D]


Sujet :

Qt

  1. #1
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut Récupérer une couleur à une position d'un QGradient
    Salut,

    J'utilise un QGradient pour réaliser un degradé avec plusieurs points de couleurs définit avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setColorAt (qreal position, const QColor & color)
    Une fois le gradient dessiné et afficher dans mon widget, je voudrais réaliser une fonctionnalité de pipette pour récuperer une couleur dans ce dit gradient.

    Je m'attendais à une fonction du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QColor getColorAt (qreal position)
    mais rien de tel.

    Une idée ?

  2. #2
    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
    http://www.developpez.net/forums/d96...r/#post5418236 ?

    Sinon, tu peux dessiner dans une image et utiliser QImage::pixel()

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Y' a ça :
    typedef QGradientStop
    Typedef for QPair<qreal, QColor>.
    QGradientStops QGradient::stops () const
    Returns the stop points for this gradient.

    If no stop points have been specified, a gradient of black at 0 to white at 1 is used.

    See also setStops() and setColorAt().
    Après, je sais pas q'il faut spécifier toutes les positions. Sinon, jette un oeil au code du Gradient, tu trouveras surement de quoi t'inspirer.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  4. #4
    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
    Effectivement, en regardant le code :
    - QGradient n'est qu'un container, il n'y a aucune fonction d'interpolation des couleurs
    - la table des couleurs pour un gradient est créé par la fonction generateGradientColorTable (http://qt.gitorious.org/qt/qt/blobs/...r.cpp#line4977) et utilise des fonctions d'interpolation INTERPOLATE_PIXEL_256, PREMUL, etc. (http://qt.gitorious.org/qt/qt/blobs/...er_p.h#line338)

    Donc tu peux implémenter une fonction qui retournera ta couleur en fonction du gradient (mais la solution la plus simple reste quand même de faire un picking sur une QImage)

  5. #5
    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 johnlamericain Voir le message
    Salut,

    J'utilise un QGradient pour réaliser un degradé avec plusieurs points de couleurs définit avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setColorAt (qreal position, const QColor & color)
    Une fois le gradient dessiné et afficher dans mon widget, je voudrais réaliser une fonctionnalité de pipette pour récuperer une couleur dans ce dit gradient.

    Je m'attendais à une fonction du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QColor getColorAt (qreal position)
    mais rien de tel.

    Une idée ?
    Tu peut faire une QImage sur lequel tu applique le gradient. Tu peut ensuite récupérer ta couleur dedans.

  6. #6
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Citation Envoyé par yan Voir le message
    Tu peut faire une QImage sur lequel tu applique le gradient. Tu peut ensuite récupérer ta couleur dedans.
    Bonne idée, je vais tester ça.

  7. #7
    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 johnlamericain Voir le message
    Bonne idée, je vais tester ça.
    si tu n'y arrive pas j'ai le bout de code.

  8. #8
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Ca marche super

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

Discussions similaires

  1. [VBA] Donner une couleur à une case
    Par ickyknox dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2008, 13h44
  2. Attribuer une couleur à une cellule
    Par digitale83 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/09/2007, 16h48
  3. attribuer une couleur à une ligne d'une gridview
    Par babafredo dans le forum ASP.NET
    Réponses: 6
    Dernier message: 16/07/2007, 11h35
  4. Spécifier une couleur à une valeur
    Par gregory2526 dans le forum MATLAB
    Réponses: 12
    Dernier message: 06/03/2007, 20h11

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