Dégradé de couleur pour fond de formulaire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 628 fois - Téléchargée 31 fois

Contenu du snippet

La procédure doit être placée dans le formulaire pour l'instant, je n'ai pas réussi à la faire fonctionner depuis un module car la ligne Set mLine(i) = Controls.Add("Vb.line", "Ligne" & i) provoque une erreur

Les paramètres de la procédure:

Formulaire : nom du formulaire auquel on veut appliquer le dégradé
R1, G1, B1 : valeur des canaux rouge, vert et bleu de la couleur de départ
R2, G2, B2 : valeur des canaux rouge, vert et bleu de la couleur d'arrivée
Sens : sens du dégradé (0 pour un dégradé Nord/Sud, 1 pour un dégradé Est/Ouest)

La procédure s'appelle de la manière suivante :

Dégradé Me, 255, 0, 0, 255, 255, 0, 0

Source / Exemple :


Public Sub Dégradé(Formulaire As Form, R1 As Integer, G1 As Integer, B1 As Integer, R2 As Integer, G2 As Integer, B2 As Integer, Sens As Integer)
    Dim mLine() As Line
    Dim R, G, B As Integer
    Dim Itérations As Long
    R = R1
    G = G1
    B = B1
    If Sens = 0 Then
        Itérations = Formulaire.Height / 15
    Else
        Itérations = Formulaire.Width / 15
    End If
    ReDim mLine(0 To Itérations)
    For i = 0 To Itérations - 1
        Set mLine(i) = Controls.Add("Vb.line", "Ligne" & i)
        With mLine(i)
            R = R + (R2 - R1) / Itérations
            G = G + (G2 - G1) / Itérations
            B = B + (B2 - B1) / Itérations
            If Sens = 0 Then
                .X1 = 0
                .X2 = Formulaire.Width
                .Y1 = i * 15
                .Y2 = i * 15
            Else
                .X1 = i * 15
                .X2 = i * 15
                .Y1 = 0
                .Y2 = Formulaire.Height
            End If
            .Visible = True
            .BorderColor = RGB(R, G, B)
        End With
    Next i
End Sub

A voir également

Ajouter un commentaire Commentaires
Messages postés
11
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
29 avril 2008

Bonjour

Je viens de lire ton code pour un fond dégradé.
Il est très bien, très lisible, mais malheureusement il ne fonctionne pas lorsque la form est "maximized" (WindowState = 2 - Maximized) à moins de donner à la form des coordonnées Height et Width très importante.

As-tu étudié une autre solution ?

Merci pour ta réponse

A.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
124
arf nicolas, je ne suis qu'à moitié d'accord avec toi :
C'est vrai, c'est bien qu'il y ait des dizaines de codes sur le même thème, MAIS que tout ces codes soient différents, car sinon ca sert pas à grand chose (ne te sens pas visé, je ne dis pas que le tiens ressemble trop aux autres !).

C'est pour cà qu'on désactive systèmatiquement maintenant les calculatrices, msgbox makers, sudoku, etc. qui n'apporte rien de plus que ce qui est déjà fait.
Messages postés
88
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
29 août 2006

Merci !!!
D'ailleurs au passage, je trouve que la diversité des codes soumis sur ce site en fait sa richesse, alors même s'il existe 10, 20 ou 50 exemples de codes (pertinents ou non) pour effectuer la même action, il y a toujours quelques lignes intéressantes à récolter, ne serait-ce justement pour ne pas refaire les mêmes erreurs niveau lourdeur (cf commentaires précédents)
Au final, merci à tous pour vos commentaires et bonne prog !!!
Messages postés
16
Date d'inscription
dimanche 19 février 2006
Statut
Membre
Dernière intervention
12 avril 2017

moi je trouve qu'elle va très bien ta source contrairement à d'autres sur ce site qui ne vont pas!!
Messages postés
796
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
7
Tu aurais ne fusse qu'entré le critère de recherche 'dégradé' sur ce site, tu aurais pu découvrir un paquet de sources, de la plus basique à la plus 'pro'. Une méthode avec Line existe déjà...

Mais de toi à moi, je ne vois aucun caractère insultant ici. Simplement te dire qu'il est préférable de rechercher si ce dont tu veux proposer n'existe déjà pas en 25 exemplaires sur VBFRANCE. Ta source n'apportant rien de mieux que celles déjà proposées, je n'y vois aucun intérêt d'autant plus qu'elle est, come je le disais précédement, 'la manière la plus lourde possible'... Mais bon, si tu es un débutant en VB on pourra être tolérant. Bonne continuation ;O)
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

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.