DrawButton Method (Graphics, Rectangle, String, Font, Boolean, PushButtonState)

ButtonRenderer.DrawButton Method (Graphics, Rectangle, String, Font, Boolean, PushButtonState)

Draws a button control in the specified state and bounds, with the specified text, and with an optional focus rectangle.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public static void DrawButton(
	Graphics g,
	Rectangle bounds,
	string buttonText,
	Font font,
	bool focused,
	PushButtonState state


Type: System.Drawing.Graphics
The Graphics used to draw the button.
Type: System.Drawing.Rectangle
The Rectangle that specifies the bounds of the button.
Type: System.String
The String to draw on the button.
Type: System.Drawing.Font
The Font to apply to buttonText.
Type: System.Boolean
true to draw a focus rectangle on the button; otherwise, false.
Type: System.Windows.Forms.VisualStyles.PushButtonState
One of the PushButtonState values that specifies the visual state of the button.

If visual styles are enabled in the operating system and visual styles are applied to the current application, this method will draw the button with the current visual style. Otherwise, it will draw the button with the classic Windows style.

The following code example uses the DrawButton(Graphics, Rectangle, String, Font, Boolean, PushButtonState) method in a custom control's OnPaint method to draw a button in the state determined by the location of the mouse pointer. This code example is part of a larger example provided for the ButtonRenderer class.

// Draw the large or small button, depending on the current state.
protected override void OnPaint(PaintEventArgs e)

    // Draw the smaller pressed button image
    if (state == PushButtonState.Pressed)
        // Set the background color to the parent if visual styles  
        // are disabled, because DrawParentBackground will only paint  
        // over the control background if visual styles are enabled.
        this.BackColor = Application.RenderWithVisualStyles ?
            Color.Azure : this.Parent.BackColor;

        // If you comment out the call to DrawParentBackground, 
        // the background of the control will still be visible 
        // outside the pressed button, if visual styles are enabled.
            ClientRectangle, this);
        ButtonRenderer.DrawButton(e.Graphics, ClickRectangle,
            this.Text, this.Font, true, state);

    // Draw the bigger unpressed button image.
        ButtonRenderer.DrawButton(e.Graphics, ClientRectangle,
            this.Text, this.Font, false, state);

// Draw the smaller pressed button image.
protected override void OnMouseDown(MouseEventArgs e)
    this.Text = "Clicked!";
    state = PushButtonState.Pressed;

// Draw the button in the hot state. 
protected override void OnMouseEnter(EventArgs e)
    this.Text = "Click here";
    state = PushButtonState.Hot;

// Draw the button in the unpressed state.
protected override void OnMouseLeave(EventArgs e)
    this.Text = "Click here";
    state = PushButtonState.Normal;

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Community Additions

© 2016 Microsoft