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

C++Builder Discussion :

[couleurs] créer des nuances


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut [RESOLU][couleurs] créer des nuances
    Slut,
    j'ai lu des sujets du forum concernant les dégradés pour les images bmp (genre transformation des niveaux de gris d'une image en dégradé de couleurs) mais je cherche qqch de plus simple.
    En fait, je souhaite colorier des cellules d'une StringGrid avec un dégradé de bleus par ex, et pour le moment j'ai seulement : clNavy, clBlue et clAqua, c'est carrément limité.
    Je voudrais savoir comment créer des couleurs intermédiaires entre ces couleurs pré-existantes.
    merci

  2. #2
    Membre averti

    Inscrit en
    Janvier 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 38
    Par défaut
    Si tu utilises des TColor tes couleurs sont codées comme ceci:
    0x00FF0000 : bleu
    0x0000FF00 : vert
    0x000000FF : rouge
    pour un dégradé de bleu il suffit donc que tu fasses une boucle sur le bleu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i(0); i<=0xFF; i++)
    {
        TColor couleur=(TColor)(i<<16);
        TaCellule->Color=couleur;
    }
    Voilà @++
    sly

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    déjà merci
    peux-tu me préciser combien de nuances ce code va créer stp (nb de boucles) ? car je m'y connais pas trop en codes de couleurs....
    Et je connais pas la syntaxe i(0) dans le for, s'agit-il d'un équivalent de i=0 ? De même, j'aimerais avoir des précisions sur le i<<16 ...
    merci !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Par défaut
    Bien le bonjour.

    Je ne connais pas non plus i(0) mais au feeling je dirai aussi que c'est équivalent à i=0. Ce qui nous fait 256 tours de boucle (0 à 0xFF), soit toutes les nuances de bleu.

    Le (i<<16) est un décalage des bits de i de 16 rangs vers la gauche.
    ex pour un octet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (1011 0111 << 2) == 1101 1100
    0x00FF0000 : bleu
    Le bleu est sur le troisième octet. Les valeurs de i sont sur le premier octet il faut donc les décaler de 2 octets, soit 16 bits, vers la gauche.

    Avec ça tu obtient donc un joli dégradé de noir vers bleu pur.

  5. #5
    Membre averti

    Inscrit en
    Janvier 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 38
    Par défaut
    i(0) est équivalent à i=0 sauf que qd tu fais i=0 tu construis i puis tu l'alloues; i(0) le construit avec la valeur 0 directement... donc 1 opération au lieu de 2

    i<<16 signifie que je décale i de 2 octets
    par exemple si i=0xFF alors i<<16=0xFF0000

    la boucle que je t'ai donné fait varier i de 0 à 0xFF par pas de 1
    tu auras donc 256 nuances
    il suffit que tu changes le pas pour avoir moins de nuances

    exemple pour 10 nuances:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int i(0); i<=0xFF; i+=0xFF/10) 
    { 
        TColor couleur=(TColor)(i<<16); 
        TaCellule->Color=couleur; 
    }
    à noter que 0xFF n'est qu'une représentation hexadécimale de 255

    voilà @++
    sly

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    merci beaucoup

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

Discussions similaires

  1. [WD-2007] Créer des palettes couleurs personnalisées
    Par Golard dans le forum VBA Word
    Réponses: 0
    Dernier message: 18/11/2013, 11h35
  2. comment créer des couleurs dans une même cellule
    Par alainbernaud dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/03/2011, 12h15
  3. Réponses: 2
    Dernier message: 19/01/2010, 11h08
  4. Créer des carrés de couleur
    Par popogendarme dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 21/03/2007, 16h02
  5. DirectDraw: Créer des surfaces 256 couleurs
    Par Magus (Dave) dans le forum DirectX
    Réponses: 5
    Dernier message: 14/10/2002, 22h28

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