Procedura: eseguire il rendering di un elemento dello stile visivo
Lo spazio dei nomi System.Windows.Forms.VisualStyles espone gli oggetti VisualStyleElement che rappresentano gli elementi dell'interfaccia utente (UI, User Interface) Windows supportati dagli stili visivi. In questo argomento viene illustrato come utilizzare la classe VisualStyleRenderer per eseguire il rendering della classe VisualStyleElement che rappresenta i pulsanti Disconnetti e Chiudi sessione del menu Start.
Per eseguire il rendering di un elemento dello stile visivo
Creare una classe VisualStyleRenderer e impostarla sull'elemento che si desidera disegnare. Si noti l'uso della proprietà Application.RenderWithVisualStyles e del metodo VisualStyleRenderer.IsElementDefined: il costruttore VisualStyleRenderer genera un'eccezione se gli stili visivi sono disabilitati o un elemento non è definito.
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); } }
Chiamare il metodo DrawBackground per eseguire il rendering dell'elemento rappresentato dalla classe VisualStyleRenderer.
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); } }
Compilazione del codice
L'esempio presenta i seguenti requisiti:
Un controllo personalizzato derivato dalla classe Control.
Una classe Form che contiene il controllo personalizzato.
Riferimenti agli spazi dei nomi System, System.Drawing, System.Windows.Forms e System.Windows.Forms.VisualStyles.