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

[Tableaux] Echelle des couleurs dynamique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut [Tableaux] Echelle des couleurs dynamique
    Bonjour,

    Je voudrais créer une échelle des couleurs dynamique.

    C'est à dire que je défini une première couleur (ex:verte #008000), une deuxième couleur (ex:rouge #FF0000) et un nombre de couleurs intermédiares (ex:3).

    Je voudrais donc obtenir le code hexa des 3 couleurs intermédiaires.

    Un indice ?

  2. #2
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Je ne suis pas trop sur d'avoir capté, mais bon...
    En gros, ce que tu veux c'est faire un dégradé à partir de 2 couleurs?
    Voilà ce que je ferais:
    1) on récupère les valeur rouge, vert, bleu de chaque couleur
    2) on le converti en nombre décimal (oui bon ok c'est pas nécessaire)
    3) on fait la différence entre ces 2 nombres et les couleurs intermédaires seront les médianes de ces couleurs.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut
    Oui c'est tout à fait ça !

    Je viens de m'en aperçevoir en demandant comment étaient défini le code hexa des couleurs.

    Donc là je voudrais directement faire la différence en hexa, c'est possible ?

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut
    La solution proposée avant ne fonctionne pas car les valeurs des couleurs ne varient pas linéairement.

    Je suis donc passé par la définition des couleurs en TSL pour trouver la valeur RGB et ensuite la valeur hexa.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    function Hue_2_RGB( $v1, $v2, $vH )             //Function Hue_2_RGB
    {
       if ( $vH < 0 ) $vH += 1;
       if ( $vH > 1 ) $vH -= 1;
       if ( ( 6 * $vH ) < 1 ) return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
       if ( ( 2 * $vH ) < 1 ) return ( $v2 );
       if ( ( 3 * $vH ) < 2 ) return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
       return ( $v1 );
    }
     
    function couleurHexa($T){
     
    	$H = $T/360;  //Les paramêtres S et L sont mis pour avoir une couleur pure
    	$S = 1;
    	$L = 1/2;
     
    	if ( $S == 0 )                       //HSL values = 0 ÷ 1
    	{
    	   $R = $L * 255;                      //RGB results = 0 ÷ 255
    	   $G = $L * 255;
    	   $B = $L * 255;
    	}
    	else
    	{
    	   if ( $L < 0.5 ){
    	   	$var_2 = $L * ( 1 + $S );
    	   }
    	   else{
    	   	$var_2 = ( $L + $S ) - ( $S * $L );
    	   }
     
    	   $var_1 = 2 * $L - $var_2;
     
    	   $R = 255 * Hue_2_RGB( $var_1, $var_2, $H + ( 1 / 3 ) );
    	   $G = 255 * Hue_2_RGB( $var_1, $var_2, $H );
    	   $B = 255 * Hue_2_RGB( $var_1, $var_2, $H - ( 1 / 3 ) );
    	}
     
    	return '#'.str_pad(dechex($R),2,'0',STR_PAD_LEFT).str_pad(dechex($G),2,'0',STR_PAD_LEFT).str_pad(dechex($B),2,'0',STR_PAD_LEFT);
    }
     
    $couleurs = array();
    $teinte = 120/($nbInterval); //La teinte varie de 0 pour le rouge à 120 pour le vert
    for ($j=0;$j<=$nbInterval;$j++){
    	$couleurs[] = couleurHexa(120-$teinte*$j);
    }

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

Discussions similaires

  1. [Débutant] Echelle de couleurs des graphiques
    Par clioplastre dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/09/2011, 21h08
  2. [CR XI] Graphique : gestion dynamique des couleurs ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 17/06/2008, 11h45
  3. [Tableaux] Alternance des couleur dans un tableau
    Par leduc26 dans le forum Langage
    Réponses: 5
    Dernier message: 03/06/2007, 19h01
  4. Réponses: 4
    Dernier message: 20/03/2007, 19h28
  5. Réponses: 3
    Dernier message: 19/04/2006, 16h45

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