ActivityDesignerPaint.DrawRoundedRectangle(Graphics, Pen, Rectangle, Int32) ActivityDesignerPaint.DrawRoundedRectangle(Graphics, Pen, Rectangle, Int32) ActivityDesignerPaint.DrawRoundedRectangle(Graphics, Pen, Rectangle, Int32) Method


Draws a rounded rectangle on the activity designer surface.

 static void DrawRoundedRectangle(System::Drawing::Graphics ^ graphics, System::Drawing::Pen ^ drawingPen, System::Drawing::Rectangle rectangle, int radius);
public static void DrawRoundedRectangle (System.Drawing.Graphics graphics, System.Drawing.Pen drawingPen, System.Drawing.Rectangle rectangle, int radius);
static member DrawRoundedRectangle : System.Drawing.Graphics * System.Drawing.Pen * System.Drawing.Rectangle * int -> unit


Graphics Graphics Graphics

The Graphics on which to draw the rectangle.

Pen Pen Pen

The Pen to draw the rectangle.

Rectangle Rectangle Rectangle

The Rectangle that defines the bounds of the rounded rectangle.

Int32 Int32 Int32

The integer value of the radius to use for the rounded edges.


graphics or drawingPen contains a null reference (Nothing in Visual Basic).


The following example demonstrates a way to use the ActivityDesignerPaint class to draw a custom activity on the workflow design surface. A rounded rectangle is first drawn using the DrawRoundedRectangle method. Text is then drawn using DrawText and is placed at the location of the TextRectangle of the ActivityDesigner. Additionally, the Image associated with the ActivityDesigner is drawn using the DrawImage method of the ActivityDesignerPaint class. Finally, an expand button used by a CompositeActivity is drawn using the DrawExpandButton.

private bool expanded = true;
private bool useBasePaint = false;

public bool UseBasePaint
    get { return this.useBasePaint; }
    set { this.useBasePaint = value; }

public bool Expanded
    get { return this.expanded; }
    set { this.expanded = value; }

protected override void OnPaint(ActivityDesignerPaintEventArgs e)
    if (this.UseBasePaint == true)


private void DrawCustomActivity(ActivityDesignerPaintEventArgs e)
    Graphics graphics = e.Graphics;

    CompositeDesignerTheme compositeDesignerTheme = (CompositeDesignerTheme)e.DesignerTheme;

    ActivityDesignerPaint.DrawRoundedRectangle(graphics, compositeDesignerTheme.BorderPen, this.Bounds, compositeDesignerTheme.BorderWidth);

    string text = this.Text;
    Rectangle textRectangle = this.TextRectangle;
    if (!String.IsNullOrEmpty(text) && !textRectangle.IsEmpty)
        ActivityDesignerPaint.DrawText(graphics, compositeDesignerTheme.Font, text, textRectangle, StringAlignment.Center, e.AmbientTheme.TextQuality, compositeDesignerTheme.ForegroundBrush);

    System.Drawing.Image image = this.Image;
    Rectangle imageRectangle = this.ImageRectangle;
    if (image != null && !imageRectangle.IsEmpty)
        ActivityDesignerPaint.DrawImage(graphics, image, imageRectangle, DesignerContentAlignment.Fill);

        new Rectangle(this.Location.X, this.Location.Y, 10, 10),
Private expandedValue As Boolean = True
Private useBasePaintValue As Boolean = False

Public Property UseBasePaint() As Boolean
        Return Me.useBasePaintValue
    End Get

    Set(ByVal value As Boolean)
        Me.useBasePaintValue = value
    End Set
End Property

Public Property Expanded() As Boolean
        Return Me.expandedValue
    End Get
    Set(ByVal value As Boolean)
        Me.expandedValue = value
    End Set
End Property

Protected Overrides Sub OnPaint(ByVal e As ActivityDesignerPaintEventArgs)
    If Me.UseBasePaint = True Then
    End If

End Sub

Private Sub DrawCustomActivity(ByVal e As ActivityDesignerPaintEventArgs)
    Dim graphics As Graphics = e.Graphics

    Dim compositeDesignerTheme As CompositeDesignerTheme = CType(e.DesignerTheme, CompositeDesignerTheme)

    ActivityDesignerPaint.DrawRoundedRectangle(graphics, compositeDesignerTheme.BorderPen, Me.Bounds, compositeDesignerTheme.BorderWidth)

    Dim text As String = Me.Text
    Dim TextRectangle As Rectangle = Me.TextRectangle
    If Not String.IsNullOrEmpty(text) And Not TextRectangle.IsEmpty Then
        ActivityDesignerPaint.DrawText(graphics, compositeDesignerTheme.Font, text, TextRectangle, StringAlignment.Center, e.AmbientTheme.TextQuality, compositeDesignerTheme.ForegroundBrush)
    End If

    Dim Image As System.Drawing.Image = Me.Image
    Dim ImageRectangle As Rectangle = Me.ImageRectangle
    If Image IsNot Nothing And Not ImageRectangle.IsEmpty Then
        ActivityDesignerPaint.DrawImage(graphics, Image, ImageRectangle, DesignerContentAlignment.Fill)
    End If

    ActivityDesignerPaint.DrawExpandButton(graphics, _
        New Rectangle(Me.Location.X, Me.Location.Y, 10, 10), _
        Me.Expanded, _
End Sub


DrawRoundedRectangle uses the GetRoundedRectanglePath method to obtain the path to draw.

Applies to