ControlPaintクラスのメソッドを利用することで、Windows標準コントロールの外観と同じものを描画することができる。

なお、.NET Framework 2.0以降ではSystem.Windows.Forms.VisualStyles名前空間のクラスを用いることもできる。

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 );
}
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
実行結果

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