Naja einfach mit GDI+ zeichnen, wenn es um ein simples Buttoncontrol geht ist das, wirklich wenig arbeit.
Hier ein kleines TestControl aus einem Tutorial von mir, das grundsätzlich wie ein sehr simpler FlatButton funktioniert. Natürlich hat er nicht wirklich ein Design, daran muss natürlich (mittels GDI) gerabeitet werden.
Spoiler anzeigen
Hier ein kleines TestControl aus einem Tutorial von mir, das grundsätzlich wie ein sehr simpler FlatButton funktioniert. Natürlich hat er nicht wirklich ein Design, daran muss natürlich (mittels GDI) gerabeitet werden.
VB.NET-Quellcode
- Option Strict On
- Option Explicit On
- Option Infer On
- Imports System.Drawing
- Imports System.ComponentModel
- Imports System.Windows.Forms
- ''' <summary>
- ''' Ein Steuerelement zum Testen des ToolboxBitmaps, auf Basis des Tutorials von Gather.
- ''' Das Tutorial ist auf vb-paradise.de zu finden.
- ''' </summary>
- <DesignerCategory("Code")>
- <Description("Ein Steuerelement zum Testen des ToolboxBitmaps, auf Basis des Tutorials von Gather.")>
- Public Class TestControl : Inherits Control
- #Region " Declarations "
- ''' <summary>
- ''' Farben zur Darstellung des TestControls.
- ''' </summary>
- Private _ControlColors As Color() = {Color.Red, Color.Yellow, Color.Green}
- #End Region
- #Region " Mouse-Hook "
- '
- ' Die Mouse-Hook wird zum Erkennen des aktuellen Mausstatus verwendet.
- '
- ''' <summary>
- ''' Wird für die Angabe des Aktuellen Mausstatus benötigt.
- ''' </summary>
- Private _CurrentState As MouseState = MouseState.None
- ''' <summary>
- ''' Enumweration für den Status der Maus.
- ''' </summary>
- ''' <remarks>Für dieses Tutorial als Integer definiert.</remarks>
- Enum MouseState As Integer
- ''' <summary>
- ''' Die Maus befindet sich nicht über dem Steuerelement.
- ''' </summary>
- None = 0
- ''' <summary>
- ''' Die Maus befindet sich über dem Steuerelement.
- ''' </summary>
- Over = 1
- ''' <summary>
- ''' Die Maus befindet sich, mit gedrückter linker Maustaste, über dem Steuerelement.
- ''' </summary>
- Down = 2
- End Enum
- Protected Overrides Sub OnMouseEnter(e As System.EventArgs)
- _CurrentState = MouseState.Over : Invalidate()
- MyBase.OnMouseEnter(e)
- End Sub
- Protected Overrides Sub OnMouseLeave(e As System.EventArgs)
- _CurrentState = MouseState.None : Invalidate()
- MyBase.OnMouseLeave(e)
- End Sub
- Protected Overrides Sub OnMouseDown(e As System.Windows.Forms.MouseEventArgs)
- _CurrentState = MouseState.Down : Invalidate()
- MyBase.OnMouseDown(e)
- End Sub
- Protected Overrides Sub OnMouseUp(e As System.Windows.Forms.MouseEventArgs)
- _CurrentState = MouseState.Over : Invalidate()
- MyBase.OnMouseUp(e)
- End Sub
- #End Region
- #Region " Drawing "
- Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
- Dim g As Graphics = e.Graphics
- Using b As New SolidBrush(_ControlColors(_CurrentState))
- g.FillRectangle(b, New Rectangle(0, 0, Width - 1, Height - 1))
- b.Color = ForeColor
- Using sf As New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}
- g.DrawString("Gathers TestControl", Font, b, ClientRectangle, sf)
- End Using
- End Using
- MyBase.OnPaint(e)
- End Sub
- #End Region
- End Class