ToolStripButtonの外観を変更する。(WinForms)

ToolStripProfessionalRendererを継承して好きなように描画する。
下記の例は
・ToolStripButtonに枠線を描画する
・ToolStripの角丸をやめる
の二点を行う例。

ToolStrip1.Renderer = New ToolStripRectRenderer()


''' <summary>
''' ToolStrip オブジェクトの描画機能を、カスタムのパレットおよび簡素化されたスタイルを適用することによって処理します。
''' </summary>
''' <remarks>ツールバーの角丸やめる。ボタンに枠線を描く。</remarks>
Private Class ToolStripRectRenderer
    Inherits ToolStripProfessionalRenderer

#Region "コンストラクタ"

    ''' <summary>
    ''' クラスの新しいインスタンスを初期化します。
    ''' </summary>
    Public Sub New()
        ' 角丸をやめる。影がツールバー右端下側にゴミのように見えるため。
        RoundedEdges = False
    End Sub

#End Region

#Region "オーバーライドされたメソッド"

    ''' <summary>
    ''' RenderButtonBackground  イベントを発生させます。
    ''' </summary>
    ''' <param name="e">イベント データを格納している System.Windows.Forms.ToolStripRenderEventArgs。</param>
    Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs)

        MyBase.OnRenderButtonBackground(e)

        If e.Item.Selected Then
            Return
        End If

        ' ボタンに枠線を表示する。
        Dim bounds = New Rectangle(Point.Empty, e.Item.Size)
        bounds.Width -= 1
        bounds.Height -= 1
        e.Graphics.DrawRectangle(SystemPens.ButtonShadow, bounds)

    End Sub

#End Region

End Class