function Degrader(StartColor, EndColor : TColor; indexColor : integer): TColor; var StartRGB : array[0..2] of integer; {couleur de début RGB} EndRGB : array[0..2] of integer; {couleur de fin RGB} CurrentRGB : array[0..2] of integer; {couleur de retour RGB} begin { Calcul des valeurs RGB pour la couleur courante } StartRGB[0] := GetRValue(ColorToRGB(StartColor)); StartRGB[1] := GetGValue(ColorToRGB(StartColor)); StartRGB[2] := GetBValue(ColorToRGB(StartColor)); { Calcul des valeurs à ajouter pour atteindre la couleur de fin } EndRGB[0] := GetRValue(ColorToRGB(EndColor)) - StartRGB[0]; EndRGB[1] := GetGValue(ColorToRGB(EndColor)) - StartRGB[1]; EndRGB[2] := GetBValue(ColorToRGB(EndColor)) - StartRGB[2]; { Calcul de la couleur courante suivant un index allant de 0 à 255 } CurrentRGB[0] := StartRGB[0] + MulDiv(indexColor,EndRGB[0],255) mod 256; CurrentRGB[1] := StartRGB[1] + MulDiv(indexColor,EndRGB[1],255) mod 256; CurrentRGB[2] := StartRGB[2] + MulDiv(indexColor,EndRGB[2],255) mod 256; { Retourne la couleur } Result := TColor(RGB(CurrentRGB[0],CurrentRGB[1],CurrentRGB[2])); end;
function Degrader(StartColor, EndColor : TColor; indexColor : byte): TColor; var StartRGB : array[0..2] of byte; {couleur de début RGB} EndRGB : array[0..2] of byte; {couleur de fin RGB} CurrentRGB : array[0..2] of byte; {couleur de retour RGB} begin { Calcul des valeurs RGB pour la couleur courante } StartRGB[0] := GetRValue(ColorToRGB(StartColor)); StartRGB[1] := GetGValue(ColorToRGB(StartColor)); StartRGB[2] := GetBValue(ColorToRGB(StartColor)); { Calcul des valeurs à ajouter pour atteindre la couleur de fin } EndRGB[0] := GetRValue(ColorToRGB(EndColor)) - StartRGB[0]; EndRGB[1] := GetgValue(ColorToRGB(EndColor)) - StartRGB[1]; EndRGB[2] := GetbValue(ColorToRGB(EndColor)) - StartRGB[2]; { Calcul de la couleur courante suivant un index allant de 0 à 255 } CurrentRGB[0] := (StartRGB[0] + MulDiv(indexColor,EndRGB[0],255)) mod 256; CurrentRGB[1] := (StartRGB[1] + MulDiv(indexColor,EndRGB[1],255)) mod 256; CurrentRGB[2] := (StartRGB[2] + MulDiv(indexColor,EndRGB[2],255)) mod 256; { Retourne la couleur } Result := RGB(CurrentRGB[0],CurrentRGB[1],CurrentRGB[2]); end;
procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin for i := 0 to 255 do begin Panel1.Color := Degrader(clNavy, clBlue, i); sleep(10); Application.ProcessMessages; end; end;
procedure TForm1.TimerTimer(Sender: TObject); begin inc(Index); if Index > 255 then Index := 0; Panel1.Color := Degrader(clNavy, clBlue, Index); end;
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.