Discussão Geral Meilleur article 1/3/2011 - 1/4/2011

  • lundi 7 mars 2011 06:46
     
      A du code

    Je vois que mon message a été élu meilleur article le premier avril. Merci Alex.

    Je me permets d'y ajouter un petit mode opératoire pour l'utilisation éventuelle de ce composant dérivé du Panel.

    - Créer un nouvel élément de type "Fichier de code" dans un projet Windows Forms vb.NET
    - Copier le code ci-dessous.
    - Compiler une première fois, ce qui aura pour effet de faire apparaître un nouveau contrôle dans la boîte à outil du concepteur de formulaire.
    - Poser le contrôle sur un formulaire et jouer avec les propriétés "BackColor", "BackColor2" et "GradientMode"
    - Le scrolling n'est pas géré, par choix. Mais au besoin, on peut modifier le rectangle qui est rempli en tenant compte de la propriété AutoScrollPosition

    Imports System.ComponentModel
    
    Imports System.Drawing
    
    Imports System.Drawing.Drawing2D
    
    
    
    
    
    Public Class BlendPanel
    
     Inherits Panel
    
    
    
     <EditorBrowsable(EditorBrowsableState.Never)> Private m_backColor2 As Color = SystemColors.Control
    
     <EditorBrowsable(EditorBrowsableState.Never)> Private m_gradientMode As LinearGradientMode = LinearGradientMode.Vertical
    
    
    
     Sub New()
    
     Me.SetStyle(ControlStyles.ResizeRedraw, True)
    
     Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    
     Me.DoubleBuffered = True
    
     End Sub
    
    
    
     <Category("Appearance")> _
    
     Public Property BackColor2() As Color
    
     Get
    
      Return Me.m_backColor2
    
     End Get
    
     Set(ByVal value As Color)
    
      Me.m_backColor2 = value
    
      Me.Invalidate()
    
     End Set
    
     End Property
    
    
    
     <Category("Appearance")> _
    
     Public Property GradientMode() As LinearGradientMode
    
     Get
    
      Return Me.m_gradientMode
    
     End Get
    
     Set(ByVal value As LinearGradientMode)
    
      Me.m_gradientMode = value
    
      Me.Invalidate()
    
     End Set
    
     End Property
    
    
    
     
     Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
    
      Using linearGradientBrush As New LinearGradientBrush(Me.ClientRectangle, Me.BackColor, Me.BackColor2, Me.GradientMode)
    
       e.Graphics.FillRectangle(linearGradientBrush, e.ClipRectangle)
    
      End Using
    
     End Sub
    End
    L'intérêt ici étant moins de faire du graphisme que de montrer comment, grâce à la programmation objet, on peut adapter l'existant.

Toutes les réponses

  • samedi 13 octobre 2012 16:07
     
     

    Merci pour cet exemple de développement d’un UserContol à partir d’un contrôle Panel

    Je suis en ce moment en phase d’apprentissage avec VB 2010 et celui-ci m’a permit de comprendre plusieurs notions mal interprétées dans la conception d’un CustomControl.

    Encore merci