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
)

Parameters

g
Type: System.Drawing::Graphics^

The Graphics used to draw the button.

bounds
Type: System.Drawing::Rectangle

The Rectangle that specifies the bounds of the button.

buttonText
Type: System::String^

The String to draw on the button.

font
Type: System.Drawing::Font^

The Font to apply to buttonText.

focused
Type: System::Boolean

true to draw a focus rectangle on the button; otherwise, false.

state
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:
    virtual void OnPaint(PaintEventArgs^ e) override
    {
        __super::OnPaint(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.
            if (Application::RenderWithVisualStyles)
            {
                this->BackColor = Color::Azure;
            }
            else
            {
                this->BackColor = 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.
            ButtonRenderer::DrawParentBackground(e->Graphics,
                ClientRectangle, this);
            ButtonRenderer::DrawButton(e->Graphics, ClickRectangle,
                this->Text, this->Font, true, state);
        }

        // Draw the bigger unpressed button image.
        else
        {
            ButtonRenderer::DrawButton(e->Graphics, ClientRectangle,
                this->Text, this->Font, false, state);
        }
    }

    // Draw the smaller pressed button image.
protected:
    virtual void OnMouseDown(MouseEventArgs^ e) override
    {
        __super::OnMouseDown(e);
        this->Text = "Clicked!";
        state = PushButtonState::Pressed;
        Invalidate();
    }

    // Draw the button in the hot state.
protected:
    virtual void OnMouseEnter(EventArgs^ e) override
    {
        __super::OnMouseEnter(e);
        this->Text = "Click here";
        state = PushButtonState::Hot;
        Invalidate();
    }

    // Draw the button in the unpressed state.
protected:
    virtual void OnMouseLeave(EventArgs^ e) override
    {
        __super::OnMouseLeave(e);
        this->Text = "Click here";
        state = PushButtonState::Normal;
        Invalidate();
    }

.NET Framework
Available since 2.0
Return to top
Show: