Salut
j'ai repris le code source dégrader simple en très deux couleurs publier sur developpez.com

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
procedure TForm1.change;
var cdep, cfin : integer;
    pr, pg, pb : real;
    Rdep, Gdep, Bdep : byte;
    Rfin, Gfin, Bfin : byte;
    i : integer;
    Fact:Double;
begin
//Facteur est un asssenceur avec les valeur Min=1 et max=100
   Fact :=Facteur.Position/50;  // ajouté par moi
 
  cdep := gauche.color; //Couleur de début
  cfin := droite.color;   //Couleur de fin
 
  // récupération des Valeur RGB des Couleurs début début et fin
  Rdep := getRvalue (cdep); //Rouge Couleur début
  Gdep := getGvalue (cdep); //Vert Couleur début
  Bdep := getBvalue (cdep); //bleu Couleur début
  Rfin := getRvalue (cfin); //Rouge Couleur fin
  Gfin := getGvalue (cfin); //Vert Couleur fin
  Bfin := getBvalue (cfin); //bleu Couleur fin
 
  // calcul du pas soit 512 la largeur du Canvas.
  pr := (Rfin - Rdep) / 512;
  pg := (Gfin - Gdep) / 512;
  pb := (Bfin - Bdep) / 512;
 
  lg.caption := 'R=' + inttostr(Rdep) + ' G=' + inttostr(Gdep) + ' B=' + inttostr(Bdep);
  ld.caption := 'R=' + inttostr(Rfin) + ' G=' + inttostr(Gfin) + ' B=' + inttostr(Bfin);
  for i := 0 to 512 do begin
   im.Canvas.pen.color := rgb (Rdep +round(i*pr), Gdep+round(i*pg), Bdep+round (
     i*pb));
    im.canvas.moveto (i,0);
    im.canvas.LineTo (i, 64);
  end;
end;
j'ai voulu rajouté une fonction qui va permettre de régler la tendance vers l'une des couleur.
je sais que tout se joue sur les valeurs
round(i*pr)
round(i*pg)
round(i*pb)
dont il faut une augmentation exponentiel du point de départ au point d'arrivé
j'ai essayé de trouvé la formule adéquat sans succès, j'ai du oublié mes cours de math