Skip to main content
All docs
V25.1
  • DevExpress v25.1 Update — Your Feedback Matters

    Our What's New in v25.1 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

    Take the survey Not interested

    GroupShapeCollection Interface

    A collection of shapes in a group.

    Namespace: DevExpress.XtraRichEdit.API.Native

    Assembly: DevExpress.RichEdit.v25.1.Core.dll

    NuGet Package: DevExpress.RichEdit.Core

    #Declaration

    public interface GroupShapeCollection :
        NestedShapeCollection,
        ISimpleCollection<NestedShape>,
        IEnumerable<NestedShape>,
        IEnumerable,
        ICollection

    The following members return GroupShapeCollection objects:

    #Remarks

    #Create a Shape Group

    Call the ShapeCollection.InsertGroup method to create a shape group. The Shape.GroupItems property returns the collection of group items. Use the collection’s Add methods to add drawing objects to the group.

    The example below creates a shape group in the document.

    Add a group to ShapeCollection

    Document document = wordProcessor.Document;
    // Set the measurement unit to inches.
    document.Unit = DevExpress.Office.DocumentUnit.Inch;
    // Insert a shape group.
    Shape group = document.Shapes.InsertGroup(document.Range.Start);
    // Specify the group position relative to the left and top edges of the page. 
    group.Offset = new PointF(1.5f, 1f);
    // Access the collection of group items. 
    var groupItems = group.GroupItems;
    // Add a rectangle to the group.
    var shape1 = groupItems.AddShape(ShapeGeometryPreset.Rectangle, new RectangleF(0f, 0f, 2f, 1.5f));
    shape1.Fill.SetSolidFill(Color.FromArgb(0xA4, 0xFF, 0xFF));
    shape1.Line.Color = Color.DarkGray;
    shape1.Line.Thickness = 2;
    // Add a picture to the group.
    var shape2 = groupItems.AddPicture(DocumentImageSource.FromFile("Picture_Arrow.png"), new PointF(2.1f, 0.3f));
    // Add a parallelogram to the group.
    var shape3 = groupItems.AddShape(ShapeGeometryPreset.Parallelogram, new RectangleF(3.8f, 0f, 2f, 1.5f));
    shape3.Fill.SetSolidFill(Color.FromArgb(0xFF, 0xA5, 0xA5));
    shape3.Line.Color = Color.DarkGray;
    shape3.Line.Thickness = 2;
    

    #Ungroup Shapes

    Use the GroupShapeCollection.Ungroup method to split a group into individual shapes.

    The example below shows how to split all shape groups in the document (including nested groups):

    using System.Linq;
    // ...
    
    Document document = wordProcessor.Document;
    List<DrawingObject> groups = document.Shapes.Flatten()
        .Where(x => x.Type == ShapeType.Group)
        .ToList();
    for (int i = groups.Count - 1; i >= 0; i--)
    {
        groups[i].GroupItems.Ungroup();
    }
    
    See Also