1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| function calcule_IndiceC(CellCol: TColor):byte;
var
rl,gl,bl, maxcol: byte;
begin
// la couleur passée correspond au fond de la cellule
ColorToRGB(CellCol, rl,gl,bl);
//L'entier IndiceC est un pilote qui peut prendre l'une des 3 valeurs (1, 2, 3)
//selon la couleur (Rouge, Vert, ou Bleu) du coin supérieur gauche (Csg);
// et si 2 valeurs identiques, prendre celle "en face", ie 255 255 0 --> 0 0 255 (bleu est "en face" du jaune),
maxcol := max(rl, max(gl, bl));
if (maxcol = rl) and (gl < rl) and (bl < rl) then begin Result := 1; exit; end;
if (maxcol = gl) and (rl < gl) and (bl < gl) then begin Result := 2; exit; end;
if (maxcol = bl) and (rl < bl) and (gl < bl) then begin Result := 3; exit; end;
// on n'est pas sorti ? Il y a des valeurs identiques, alors...
if (rl = gl) then begin Result := 3; exit; end; // couleur opposée a dit wiwaxia
if (rl = bl) then begin Result := 2; exit; end;
if (bl = gl) then begin Result := 1; exit; end;
// et si rl = gl = bl ? Si = 0 -> noir, = 255 -> blanc, entre -> gris
// pas des couleurs, ça
end; |
Partager