Pour autant sauriez-vous les dénombrer et les nommer ?
Alors pour cela le logiciel Denis-draw permet de retrouver comment chacune d'entre elles se nomme en cherchant dans une liste par analogie successive le nom des couleurs en français de chacune d'elle.
Voici cet algorythme qui permet à partir d'une liste de couleur de référence de trouver exactement la plus proche de son espace de coordonnés de trois composants.
procedure T_Col_Named.recherche_couleur_plus_proche(find_this_color:TColorRef; var result_named_color:T_color_name);
var i:integer;
distance_maxi:longint;
une_couleur:lec_color.T_color_name;
{Parcours l'intégralité du tableau, trouve la couleur la plus proche (c) dB}
procedure first_name_color(named_color:T_color_name);
var distance_local:longint;
begin
{la différence des composants (rouge vert bleu)}
distance_local:=(abs(GetRvalue(find_this_color)-GetRvalue(named_color.color)))
+(abs(GetGvalue(find_this_color)-GetGvalue(named_color.color)))
+(abs(GetBvalue(find_this_color)-GetBvalue(named_color.color)));
{et telle la plus proche ?}
if distance_local<distance_maxi then
begin
distance_maxi:=distance_local;
{On prend cette couleur elle est la plus proche}
result_named_color:=named_color;
end;
end; {first_name_color}
begin {recheche_couleur_plus_proche}
{Un nombre très grand initialisé au plus grand}
distance_maxi:=$ffffff;
{Je n'est pas encore trouvé de couleur}
result_named_color:=nil;
{Je parcours la collection}
for i:=0 to pred(self.Count) do
begin
une_couleur:=self.at(i);
{Est-ce que cette couleur correspond?}
if une_couleur<>nil then
first_name_color(une_couleur);
end; {for i}
end; {T_Col_Named.recherche_couleur_plus_proche}