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 Delphi Discussion :

Comment changer la teinte d'une couleur ?


Sujet :

Langage Delphi

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut Comment changer la teinte d'une couleur ?
    Bonjour à tous,

    J'aimerai changer la teinte d'une couleur RGB sous delphi.

    Exemple, j'ai un rouge clair : FF6161
    J'aimerai lui appliquer une teinte bleue, ma couleur deviendrait alors du bleu clair : 6161FF

    Existe t'il des fonctions pour appliquer une teinte à une couleur sous delphi? J'ai cherché sur google mais j'ai rien trouvé qui m'aiderait.

    Désolé si mon poste est pas très clair.
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    J'ai découvert (accidentellement ) une unité fournie avec BDS2006 (je ne sais pas si elle est fournie avec d'autres versions) qui s'appelle GraphUtil qui ne paye pas de mine mais qui accomplit des trésors de qualité (©Jean-Pierre Coffe )
    Tu y trouveras une tripotée de routines de graphismes dont pleins de fonctions de modification de couleurs Peut-être que celle qui fera ton bonheur s'y trouve.
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut
    Merci pour le nom de la classe je vais voir si je peux la trouver sur google Ca correspond à quoi BDS2006 ? Merci

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par Hell
    Merci pour le nom de la classe je vais voir si je peux la trouver sur google
    Alors ne nous mélangeons pas les pinceaux GraphUtil n'est pas une classe mais une unité.
    Citation Envoyé par Hell
    Ca correspond à quoi BDS2006 ? Merci
    Borland Delphi Studio 2006
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut
    Merci. Oui c'est vrai désolé j'ai pris l'habitude de faire une unité par classe d'ou le mélange

    J'ai aussi cette unité dans delphi 7 mais je n'ai aucune méthode pour ça, les seules méthodes que j'ai sont des méthodes de conversions RGB => HSL et vice versa.

    D'ailleurs elles ont pas l'air de bien fonctionner ces conversions, j'ai essayé de convertir une valeur rgb en hsl puis de reconvertir cette dernière en rgb et je ne tombe pas sur le bon résultat

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Hell Voir le message
    Bonjour à tous,

    J'aimerai changer la teinte d'une couleur RGB sous delphi.

    Exemple, j'ai un rouge clair : FF6161
    J'aimerai lui appliquer une teinte bleue, ma couleur deviendrait alors du bleu clair : 6161FF

    Existe t'il des fonctions pour appliquer une teinte à une couleur sous delphi? J'ai cherché sur google mais j'ai rien trouvé qui m'aiderait.

    Désolé si mon poste est pas très clair.
    Merci d'avance
    RGB (Rouge Vert/Green Bleu) ce sont trois octets tout bêtement

    rouge clair : FF6161 -> $FF Rouge, $61 en vert et bleu
    bleu clair : 6161FF -> $61 en Rouge et Vert, $FF en Bleu

    de là tu peux imaginer des fonctions de transformation de ces trois valeurs...

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Color:=(Color and $fefefe) shr 1;
    ce code divise par 2 chaque composante couleur afin d'assombrir la couleur

    si tu n'as pas l'habitude des opérations binaire, voici l'explication :

    Color est codé sur trois octets comme expliqué ci dessus
    on veux diviser par 2 chaque octets

    $FE c'est un octet privé de son bit le plus faible soit 11111110 en binaire

    l'opération AND va éteindre le bit le plus faible :
    0 (00000000) and $FE -> 0 (00000000)
    1 (00000001) and $FE -> 0 (00000000)
    2 (00000010) and $FE -> 2 (00000010)
    3 (00000011) and $FE -> 2 (00000010)
    4 (00000100) and $FE -> 4 (00000100)

    SHR 1 décale les bits à droite, ce qui correspond à une division par 2

    0 (00000000) shr 1 -> 0 (00000000)
    1 (00000001) shr 1 -> 0 (00000000)
    2 (00000010) shr 1 -> 1 (00000001)
    3 (00000011) shr 1 -> 1 (00000001)
    4 (00000100) shr 1 -> 2 (00000010)

    en réfléchissant un peu, on voit qu'en combinant les deux opération, on va éteindre un bit qui sera décalé, du coup il ne va pas "déborder" sur la composant couleur d'à côté

    $FFFFFF shr 1 => $7FFFFE (ici seul le Rouge est bien divisé par deux)
    $FEFEFE shr 1 => $7F7F7F (ici on divise bien par deux chaque composantes)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut
    Merci c'est sympa d'avoir proposé ça Mais je crois que c'est pas de mon niveau, je m'y connais pas encore assez en couleur pour créer mon propre algorithme.

    J'ai trouvé une solution pour la teinte, en utilisant une fonction de conversion:
    - je convertis ma couleur de teinte en tls
    - je stocke la valeur de la teinte tls

    - je convertis ma couleur à modifier en tls

    - je remplace la teinte tls par celle de la teinte à appliquer
    - et enfin je convertis la couleur tls modifiée en rgb pour avoir ma nouvelle couleur

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

Discussions similaires

  1. comment changer le type d'une relation ?
    Par mitapi dans le forum Access
    Réponses: 5
    Dernier message: 21/05/2007, 10h29
  2. Réponses: 4
    Dernier message: 05/05/2006, 10h42
  3. [Jboss][myEclipse] Comment changer le contexte d'une appli
    Par adilou1981 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 28/03/2006, 00h33
  4. Comment changer le dbo d'une base de données?
    Par Immobilis dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/02/2006, 13h21
  5. [FRAME] Comment changer la hauteur d'une frame ?
    Par iubito dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/10/2004, 10h50

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