Dégradé de couleur en RGB

Résolu
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 - 31 mars 2008 à 17:34
 VelocityPulse - 8 févr. 2016 à 13:21
Bonjour.

Voila pour représenter des températures je dois dans un programme je dois faire un dégradé de couleurs du jaune au rouge. Il faut donc que je fasse ça avec les RGB. Comment faire pour obtenir un dégradé uniforme avec n couleurs différentes?

Je demande pas l'algorithme tout fait (bien que je ne sois pas contre) mais au moins le principe :" tu ajoutes deux au rouge et trois au vert" enfin quelque chose comme ça que je puisse ensuite généraliser dans un algorithme.

Donc voila si quelqu'un peut me donner la méthode de création d'un dégradé merci bien.

Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.
A voir également:

24 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
2 avril 2008 à 22:32
Je suis tout a fait d'accord avec toi. Les couleurs dans le systeme HSL sont plus instinctif plus proche de la perception humaine.

Cependant ca me parait étrange que les programmeurs de MSPaint voulant faire une représentation du codage HSL ne passe pas par le HSL...
J'aimerai que Miquel75 nous disent un peu plus précisement de la manière adoptée pour code ce dégrader.

0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 avril 2008 à 22:38
Ce n'est pas spécialement MSPaint qui est fait comme ca, c'est une boite de dialogue qui fait aprtie intégrante de Windows, tu l'obtiens en appelant la fonction ChooseColor (ca m'étonnerait aussi qu'il soit fait en RGB...)

_____________________________________
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
2 avril 2008 à 22:53
Ha je ne savais pas pour cette boite de dialogue. C'est bon a savoir merci.

Bon en fait je pense que tout dépend du dégradé que l'on veut faire. Si on veut faire un dégradé entre deux couleurs voisines le codage RGB est amplement suffisant. Si on veut faire un dégradé plus étandu, le HSL semble etre une meilleure représentation

Je ne suis pas mécontent que tu penses comme moi pour la boite de dialogue ChooseColor.

0
Salut a tous !

J’ai beaucoup travaillé sur le sujet et pour ceux qui veulent la version pure C voici comment j’ai procédé.

typedef struct s_rgb 
{ 
  int r; 
  int g; 
  int b; 
} t_rgb;

typedef struct s_dual_color 
{ 
  t_rgb c1; 
  t_rgb c2; 
} t_dual_color;


La fonction:
c = les deux couleurs
c.c1 -> le départ
c.c2 -> la fin
n = le nombre de couleurs intermédiaires
p = l’endroit où nous nous trouvons (la position)

Cette fonction renvoi une couleur en rbg correspondant a la position (p) sur une nuance de deux couleur (c) avec comme information l’écart entre la couleur de depart et celle de fin (n).

t_rgb ft_find_color_gradient(t_dual_color c, int n, int p) 
{ 
  t_rgb d; 

  d.r = c.c1.r + (int)(((float)(c.c2.r - c.c1.r) / (float)n) * (float)p); 
  d.g = c.c1.g + (int)(((float)(c.c2.g - c.c1.g) / (float)n) * (float)p); 
  d.b = c.c1.b + (int)(((float)(c.c2.b - c.c1.b) / (float)n) * (float)p); 

  return (d); 
}
0
Rejoignez-nous