Comment : restituer un élément de style visuel
L'espace de noms System.Windows.Forms.VisualStyles expose des objets VisualStyleElement qui représentent les éléments de l'interface utilisateur Windows pris en charge par les styles visuels. Cette rubrique montre comment utiliser la classe VisualStyleRenderer pour restituer l'VisualStyleElement qui représente les boutons Fermer la session et Arrêter du menu Démarrer.
Pour restituer un élément de style visuel
Créez un VisualStyleRenderer et définissez-le selon l'élément que vous souhaitez dessiner. Notez l'utilisation de la propriété Application.RenderWithVisualStyles et de la méthode VisualStyleRenderer.IsElementDefined ; le constructeur VisualStyleRenderer lèvera une exception si les styles visuels sont désactivés ou si un élément est indéfini.
Private renderer As VisualStyleRenderer = Nothing Private element As VisualStyleElement = _ VisualStyleElement.StartPanel.LogOffButtons.Normal Public Sub New() Me.Location = New Point(50, 50) Me.Size = New Size(200, 200) Me.BackColor = SystemColors.ActiveBorder If Application.RenderWithVisualStyles And _ VisualStyleRenderer.IsElementDefined(element) Then renderer = New VisualStyleRenderer(element) End If End Sub
private VisualStyleRenderer renderer = null; private readonly VisualStyleElement element = VisualStyleElement.StartPanel.LogOffButtons.Normal; public CustomControl() { this.Location = new Point(50, 50); this.Size = new Size(200, 200); this.BackColor = SystemColors.ActiveBorder; if (Application.RenderWithVisualStyles && VisualStyleRenderer.IsElementDefined(element)) { renderer = new VisualStyleRenderer(element); } }
private: VisualStyleRenderer^ renderer; VisualStyleElement^ element; public: CustomControl() { this->Location = Point(50, 50); this->Size = System::Drawing::Size(200, 200); this->BackColor = SystemColors::ActiveBorder; this->element = VisualStyleElement::StartPanel::LogOffButtons::Normal; if (Application::RenderWithVisualStyles && VisualStyleRenderer::IsElementDefined(element)) { renderer = gcnew VisualStyleRenderer(element); } }
Appelez la méthode DrawBackground pour restituer l'élément que VisualStyleRenderer représente actuellement.
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) ' Draw the element if the renderer has been set. If (renderer IsNot Nothing) Then renderer.DrawBackground(e.Graphics, Me.ClientRectangle) ' Visual styles are disabled or the element is undefined, ' so just draw a message. Else Me.Text = "Visual styles are disabled." TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, _ New Point(0, 0), Me.ForeColor) End If End Sub
protected override void OnPaint(PaintEventArgs e) { // Draw the element if the renderer has been set. if (renderer != null) { renderer.DrawBackground(e.Graphics, this.ClientRectangle); } // Visual styles are disabled or the element is undefined, // so just draw a message. else { this.Text = "Visual styles are disabled."; TextRenderer.DrawText(e.Graphics, this.Text, this.Font, new Point(0, 0), this.ForeColor); } }
protected: virtual void OnPaint(PaintEventArgs^ e) override { // Draw the element if the renderer has been set. if (renderer != nullptr) { renderer->DrawBackground(e->Graphics, this->ClientRectangle); } // Visual styles are disabled or the element is undefined, // so just draw a message. else { this->Text = "Visual styles are disabled."; TextRenderer::DrawText(e->Graphics, this->Text, this->Font, Point(0, 0), this->ForeColor); } }
Compilation du code
Cet exemple nécessite les éléments suivants :
Un contrôle personnalisé dérivé de la classe Control.
Un Form qui héberge le contrôle personnalisé.
Des références aux espaces de noms System, System.Drawing, System.Windows.Forms et System.Windows.Forms.VisualStyles.