none
Meilleur article 1/3/2011 - 1/4/2011 RRS feed

  • Discussion générale

  • 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.
    • Fractionné Alex Petrescu vendredi 1 avril 2011 12:05 meilleur article
    • Modifié Foleide. _ samedi 2 avril 2011 11:53 Ajout d'explications
    lundi 7 mars 2011 06:46

Toutes les réponses

  • 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

    samedi 13 octobre 2012 16:07