Titre: Dégradé de couleurs.
Description:
Un dégradé de couleurs au plus simple.
Le code:
Option Explicit Public Function Degrade(Objet As Object, DebCol As Long, FinCol As Long, Vertical As Integer) As Byte On Error Resume Next Dim a As Integer 'Déclaration des variables Dim r As Double Dim V As Double 'Obligé en double ici, sinon avec certaines couleur le dégradé ce fai pas comme il faut Dim b As Double Dim r2 As Double Dim v2 As Double Dim b2 As Double Dim decR As Double Dim decV As Double Dim decB As Double Dim Scal As Byte Dim Vcalc As Long b = DebCol \ 65536 'Décomposition des couleur en rouge V = (DebCol - b * 65536) \ 256 'Vert et bleu r = DebCol - b * 65536 - V * 256 'calcul trouvé sur www.vbcode.com b2 = FinCol \ 65536 v2 = (FinCol - b2 * 65536) \ 256 r2 = FinCol - b2 * 65536 - v2 * 256 Scal = Objet.ScaleMode 'Enregistre le scale de l'objet Objet.ScaleMode = 3 'Modifi le scale de l'objet en pixel If Vertical = False Then Vcalc = Objet.ScaleWidth Else Vcalc = Objet.ScaleHeight decR = (r2 - r) / Vcalc 'Calcul du décalage des couleurs decV = (v2 - V) / Vcalc decB = (b2 - b) / Vcalc 'Tracage du dégradé If Vertical = False Then 'Horizontal For a = 0 To Objet.ScaleWidth Objet.Line (a, 0)-(a + 1, Objet.ScaleHeight), RGB(r, V, b), BF r = Abs(r + decR): V = Abs(V + decV): b = Abs(b + decB) 'Incrémentation des couleurs Next a Else 'Vertical For a = 0 To Objet.ScaleHeight Objet.Line (0, a)-(Objet.ScaleWidth, a + 1), RGB(r, V, b), BF r = Abs(r + decR): V = Abs(V + decV): b = Abs(b + decB) 'Incrémentation des couleurs Next a End If 'J'utilise la valeur absolu ci-dessus car sur certines couleur ca passe en dessous de zéro :-( sais pas pk Objet.ScaleMode = Scal 'Remet comme il faut le scale de l'objet If Err Then Degrade = 1 Else Degrade = 0 'La fonction renvoi 1 en cas d'erreur End Function Private Sub Command1_Click() Dim Vr1 Vr1 = Degrade(Form1, 1, 1000, 350) End Sub |