RURUInc
Messages postés42Date d'inscriptionjeudi 21 février 2008StatutMembreDernière intervention21 octobre 2008
-
21 août 2008 à 23:40
RURUInc
Messages postés42Date d'inscriptionjeudi 21 février 2008StatutMembreDernière intervention21 octobre 2008
-
22 août 2008 à 13:26
Je seche sur le coup là
J'ai récupéré ce code, j'y ai ajouté des info en rouge
Procedure Degrader(Canevas : TCanvas;Rect : TRect;FStartColor:Tcolor;FEndColor:Tcolor; Donnee:String);
Var
aBand : TRect; { Bande rectangulaire de couleur courante }
i : Integer; { Compteur pour parcourir la hauteur de la fiche }
FStartRGB : Array[0..2] of Byte; { RGB de la couleur de départ }
FCurrentRGB : Array[0..2] of Byte; { RGB de la couleur courante }
FDeltaRGB : Array[0..2] of Integer; { RGB à ajouter à la couleur de départ pour atteindre la couleur de fin }
nbtranches: integer;
Begin
{ Calcul des valeurs RGB pour la couleur courante }
FStartRGB[0] := GetRValue( ColorToRGB( FStartColor ) );
FStartRGB[1] := GetGValue( ColorToRGB( FStartColor ) );
FStartRGB[2] := GetBValue( ColorToRGB( FStartColor ) );
{ Calcul des valeurs à ajouter pour atteindre la couleur de fin }
FDeltaRGB[0] := GetRValue( ColorToRGB( FEndColor )) - FStartRGB[0] ;
FDeltaRGB[1] := GetgValue( ColorToRGB( FEndColor )) - FStartRGB[1] ;
FDeltaRGB[2] := GetbValue( ColorToRGB( FEndColor )) - FStartRGB[2] ;
{ Initialisation des dimensions de la bande de couleur }
aBand.Left :=Rect.Left;
aBand.Right:=Rect.Right;
nbtranches:=min(256, Rect.Bottom-Rect.Top);
{ Boucle pour remplir la fiche courante en dégradé }
With Canevas Do
Begin
Pen.Style:=psSolid;
Pen.Mode:=pmCopy;
For i:= 0 To nbtranches-1 Do
Begin
{ Dimensions verticales de la bande }
aBand.Left :=Rect.Left;
aBand.Right:=Rect.Right;
aBand.Top := Rect.Top+Round((Rect.Bottom-Rect.Top)/nbtranches*i);
aBand.Bottom := Rect.Top+Round((Rect.Bottom-Rect.Top)/nbtranches*(i+1));
{ Calcul de la couleur courante }
FCurrentRGB[0] := (FStartRGB[0] + MulDiv( i , FDeltaRGB[0] , nbtranches )) mod 256;
FCurrentRGB[1] := (FStartRGB[1] + MulDiv( i , FDeltaRGB[1] , nbtranches )) mod 256;
FCurrentRGB[2] := (FStartRGB[2] + MulDiv( i , FDeltaRGB[2] , nbtranches )) mod 256;
{ Affichage sur la fiche }
Brush.color:=RGB(FCurrentRGB[0],FCurrentRGB[1],FCurrentRGB[2]);
FillRect(aBand);
End;
DrawText(Handle, PChar(Donnee), -1, Rect, DT_CENTER or DT_NOPREFIX or DT_VCENTER or DT_SINGLELINE );
End;
End;
With Sender As TStringGrid Do With Canvas Do
Begin
if (Arow = 0) And (ACol >0) then
Begin
Degrader(StringgridSemaine.Canvas,Rect,clcream,clblue, Cells[Acol,Arow]);//$00DB9E5D,$00C98843);
end;
end;
end;
Mon problème c'est que le text de mes cellule qui se trouve par dessus le dégradé comporte un font bleu donc c'est horrible en fait !!! j'arrive pas ecrire juste le texte sans aucun font dans mon dégradé.
Il y a-t-il des spécialiste dans le coin lolol. Merci de votre aide.