Fond en couleurs degradé winform vb2005

wardavb Messages postés 25 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 12 août 2008 - 13 juin 2006 à 12:40
 Utilisateur anonyme - 13 juin 2006 à 16:07
bonjour je cherche les commandes qui permettent d'avoir un back color degradé
sur les winforms
Pour info j'avais essayé ca a l'epoque d'apres une webcast de presentation microsoft que je ne retrouve plus (ca fait une semaine que j'en bave des webcast :p)
et ca marchait tres bien sur vb express 2005
c'etait tres simple yavait une ligne d'import a creer en entete,peut etre 2 lignes de codes...
et il suffisait apres depuis la boite proprieté de selectionner une certaine proprieté (pas evidente au premier abord) pour colorer le fond du form ....
merci si quelqun a des infos

4 réponses

Utilisateur anonyme
13 juin 2006 à 13:40
Salut,

Alors l'importation:


Imports
System.Drawing.Drawing2D



Et pour tracer le dégrader, ca se passe dans le paint de ta form:

Private

Sub
FormOnPaint(
ByVal
sender
As

Object
,
ByVal
e
As
System.Windows.Forms.PaintEventArgs)
Handles

MyBase
.Paint

  Dim
GradientBrush
As

New
System.Drawing.Drawing2D.LinearGradientBrush(
MyBase
.ClientRectangle, System.Drawing.Color.Red, System.Drawing.Color.Blue, 45)

  e.Graphics.FillRectangle(GradientBrush,
MyBase
.ClientRectangle)

  GradientBrush.Dispose()

End

Sub





Kenji

Merci de lire le règlement (vivement conseillé voir obligatoire).

/FONT>
0
wardavb Messages postés 25 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 12 août 2008
13 juin 2006 à 14:42
0
wardavb Messages postés 25 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 12 août 2008
13 juin 2006 à 14:48
Merci beaucoup kenji ta solution fonctionne et me rend bien service

Cependant je vais laisser le debat ouvert ,car
dans la solution exposée par la webcast,on modifiait les couleurs depuis le panneau "proprieté" de l'objet
il me semble aussi que ca marchait pour les boutons ou autres ,et que les couleurs restaient affichees meme en mode creation
0
Utilisateur anonyme
13 juin 2006 à 16:07
Ok,pour ca il faut ajouter des propriétés a la form.
Donc en refaire une nouvelle.
Ca va être long:

Donc premiérement, on crée une class FormPerso hérité d'une form classique ou l'on rajoutera les propriétés du dégrader ainsi que la fonction pour le tracer
Ce qui donne: (A mettre dans un fichier code vierge)
Option

Explicit

On

Option

Strict

On

Imports
System

Imports
System.Windows.Forms

Imports
System.Drawing

Imports
System.Drawing.Drawing2D

Public

Class
FormPerso

  
Inherits
System.Windows.Forms.Form

  
Private
_ShowGradientColor
As

Boolean
=
False

  
Private
_GradientColorStart
As
System.Drawing.Color = System.Drawing.Color.Transparent

  
Private
_GradientColorEnd
As
System.Drawing.Color = System.Drawing.Color.Transparent

  
Private
_GradientAlpha
As

Single
= 0

  <System.ComponentModel.Category(
"Gradient"
), System.ComponentModel.DefaultValue(
False
)> _

  
Public

Property
ShowGradientColor()
As

Boolean

    
Get

      
Return

MyClass
._ShowGradientColor

    
End

Get

    
Set
(
ByVal
value
As

Boolean
)

      
MyClass
._ShowGradientColor = value

      
MyBase
.Invalidate()

    
End

Set

  
End

Property

  <System.ComponentModel.Category(
"Gradient"
), System.ComponentModel.DefaultValue(
"System.Drawing.Color.Transparent"
)> _

  
Public

Property
GradientColorStart()
As
System.Drawing.Color

    
Get

      
Return

MyClass
._GradientColorStart

    
End

Get

    
Set
(
ByVal
value
As
System.Drawing.Color)

      
MyClass
._GradientColorStart = value

      
If

MyClass
._ShowGradientColor
Then

MyBase
.Invalidate()

    
End

Set

  
End

Property

  <System.ComponentModel.Category(
"Gradient"
), System.ComponentModel.DefaultValue(
"System.Drawing.Color.Transparent"
)> _

  
Public

Property
GradientColorEnd()
As
System.Drawing.Color

    
Get

      
Return

MyClass
._GradientColorEnd

    
End

Get

    
Set
(
ByVal
value
As
System.Drawing.Color)

      
MyClass
._GradientColorEnd = value

      
If

MyClass
._ShowGradientColor
Then

MyBase
.Invalidate()

    
End

Set

  
End

Property

  <System.ComponentModel.Category(
"Gradient"
), System.ComponentModel.DefaultValue(0)> _

  
Public

Property
GradientAlpha()
As

Single

    
Get

      
Return

MyClass
._GradientAlpha

    
End

Get

    
Set
(
ByVal
value
As

Single
)

      
MyClass
._GradientAlpha = value

      
If

MyClass
._ShowGradientColor
Then

MyBase
.Invalidate()

    
End

Set

  
End

Property

  
Protected

Overrides

Sub
OnPaint(
ByVal
e
As
System.Windows.Forms.PaintEventArgs)

    
If

MyClass
._ShowGradientColor
Then

      
Dim
GradientBrush
As

New
System.Drawing.Drawing2D.LinearGradientBrush(
MyBase
.ClientRectangle,
MyClass
._GradientColorStart,
MyClass
._GradientColorEnd,
MyClass
._GradientAlpha)

      e.Graphics.FillRectangle(GradientBrush,
MyBase
.ClientRectangle)

      GradientBrush.Dispose()

    
End

If

    
MyBase
.OnPaint(e)

  
End

Sub

End

Class

Donc ici, nous avons une form qui a la particularité qu'on puisse dessiner des dégradés.

Maintenant, il faut que tu définisse à form sur laquel tu va travailler, qu'elle va hériter de la class FormPerso crée précédament.
Pour ca dans le code designer (par défaut Form1.Designer.vb):
On va remplacer le
Inherits
System.Windows.Forms.Form

qui est une form classique par notre form perso

Inherits
FormPerso



Voili, voulou, en principe tu as des propriétés ShowGradientColor, GradientColorStart, GradientColorEnd et GradientAlpha dans la catégorie Gradient.






Kenji

Merci de lire le règlement (vivement conseillé voir obligatoire).

/FONT>
0
Rejoignez-nous