Windows標準コントロールの外観と同じものを描画する

注意:
この文書は以前「.NETでいきまっしょい!」で公開していたものですが、公開以降メンテナンスされていません。 今や古い情報となった内容が記載されている場合があるのでご注意ください。

 ControlPaintクラスのメソッドを利用することで、Windows標準コントロールの外観と同じものを描画することができる。
VB.NET
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

    ' 枠線、隆起
    ControlPaint.DrawBorder3D(e.Graphics, 10, 10, 50, 50, Border3DStyle.Bump)

    ' 枠線、沈降
    ControlPaint.DrawBorder3D(e.Graphics, 80, 10, 50, 50, Border3DStyle.Sunken)

    ' 右側と左側だけ
    ControlPaint.DrawBorder3D(e.Graphics, 10, 80, 50, 50, Border3DStyle.Bump, Border3DSide.Left Or Border3DSide.Right)

    ' スクロールバーのボタン (左側)
    ControlPaint.DrawScrollButton(e.Graphics, 80, 80, 15, 15, ScrollButton.Left, ButtonState.Normal)

    ' スクロールバーのボタン (最大値、クリック時)
    ControlPaint.DrawScrollButton(e.Graphics, 80, 100, 15, 15, ScrollButton.Max, ButtonState.Checked)

    ' スクロールバーのボタン (上側、押されている状態)
    ControlPaint.DrawScrollButton(e.Graphics, 100, 80, 15, 40, ScrollButton.Up, ButtonState.Pushed)

    ' チェックボックス
    ControlPaint.DrawCheckBox(e.Graphics, 120, 80, 15, 15, ButtonState.Checked)

    ' ラジオボタン
    ControlPaint.DrawRadioButton(e.Graphics, 140, 80, 15, 15, ButtonState.Checked)

End Sub
C#
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
private void Form1_Paint( object sender, System.Windows.Forms.PaintEventArgs e )
{
    // 枠線、隆起
    ControlPaint.DrawBorder3D( e.Graphics, 10, 10, 50, 50, Border3DStyle.Bump );

    // 枠線、沈降
    ControlPaint.DrawBorder3D( e.Graphics, 80, 10, 50, 50, Border3DStyle.Sunken );

    // 右側と左側だけ
    ControlPaint.DrawBorder3D( e.Graphics, 10, 80, 50, 50, Border3DStyle.Bump, Border3DSide.Left Or Border3DSide.Right );

    // スクロールバーのボタン (左側)
    ControlPaint.DrawScrollButton( e.Graphics, 80, 80, 15, 15, ScrollButton.Left, ButtonState.Normal );

    // スクロールバーのボタン (最大値、クリック時)
    ControlPaint.DrawScrollButton( e.Graphics, 80, 100, 15, 15, ScrollButton.Max, ButtonState.Checked );

    // スクロールバーのボタン (上側、押されている状態)
    ControlPaint.DrawScrollButton( e.Graphics, 100, 80, 15, 40, ScrollButton.Up, ButtonState.Pushed );

    // チェックボックス
    ControlPaint.DrawCheckBox( e.Graphics, 120, 80, 15, 15, ButtonState.Checked );

    // ラジオボタン
    ControlPaint.DrawRadioButton( e.Graphics, 140, 80, 15, 15, ButtonState.Checked );
}
実行結果
実行結果

 ここで紹介した以外にも様々なコントロールを描画できる。 ただし、Windows XPスタイルの外観を持つコントロールを描画するには、UxTheme.dll等を使う必要がある。