Shape Class

Represents an object in the drawing layer, such as an AutoShape, textbox, freeform, OLE object, ActiveX control, or picture.
Inheritance Hierarchy

Namespace:  Aspose.Words.Drawing
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.3
Syntax
public sealed class Shape : ShapeBase

The Shape type exposes the following members.

Constructors
  NameDescription
Public methodCode exampleShape
Creates a new shape object.
Properties
  NameDescription
Public propertyCode exampleAllowOverlap
Gets or sets a value that specifies whether this shape can overlap other shapes.
(Inherited from ShapeBase.)
Public propertyCode exampleAlternativeText
Defines alternative text to be displayed instead of a graphic.
(Inherited from ShapeBase.)
Public propertyCode exampleAnchorLocked
Specifies whether the shape's anchor is locked.
(Inherited from ShapeBase.)
Public propertyCode exampleAspectRatioLocked
Specifies whether the shape's aspect ratio is locked.
(Inherited from ShapeBase.)
Public propertyCode exampleBehindText
Specifies whether the shape is below or above text.
(Inherited from ShapeBase.)
Public propertyCode exampleBottom
Gets the position of the bottom edge of the containing block of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleBounds
Gets or sets the location and size of the containing block of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleBoundsInPoints
Gets the location and size of the containing block of the shape in points, relative to the anchor of the topmost shape.
(Inherited from ShapeBase.)
Public propertyCode exampleBoundsWithEffects
Gets final extent that this shape object has after applying drawing effects. Value is measured in points.
(Inherited from ShapeBase.)
Public propertyCode exampleCanHaveImage
Returns true if the shape type allows the shape to have an image.
(Inherited from ShapeBase.)
Public propertyCode exampleChart
Provides access to the chart properties if this shape has a Chart.
Public propertyCode exampleChildNodes
Gets all immediate child nodes of this node.
(Inherited from CompositeNode.)
Public propertyCode exampleCoordOrigin
The coordinates at the top-left corner of the containing block of this shape.
(Inherited from ShapeBase.)
Public propertyCode exampleCoordSize
The width and height of the coordinate space inside the containing block of this shape.
(Inherited from ShapeBase.)
Public propertyCode exampleCount
Gets the number of immediate children of this node.
(Inherited from CompositeNode.)
Public propertyCode exampleDistanceBottom
Returns or sets the distance (in points) between the document text and the bottom edge of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleDistanceLeft
Returns or sets the distance (in points) between the document text and the left edge of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleDistanceRight
Returns or sets the distance (in points) between the document text and the right edge of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleDistanceTop
Returns or sets the distance (in points) between the document text and the top edge of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleDocument
Gets the document to which this node belongs.
(Inherited from Node.)
Public propertyCode exampleExtrusionEnabled
Returns true if an extrusion effect is enabled.
Public propertyCode exampleFill
Defines a fill for a shape.
Public propertyCode exampleFillColor
Defines the brush color that fills the closed path of the shape.
Public propertyCode exampleFilled
Determines whether the closed path of the shape will be filled.
Public propertyCode exampleFirstChild
Gets the first child of the node.
(Inherited from CompositeNode.)
Public propertyCode exampleFirstParagraph
Gets the first paragraph in the shape.
Public propertyCode exampleFlipOrientation
Switches the orientation of a shape.
(Inherited from ShapeBase.)
Public propertyCode exampleFont
Provides access to the font formatting of this object.
(Inherited from ShapeBase.)
Public propertyCode exampleHasChart
Returns true if this Shape has a Chart.
Public propertyCode exampleHasChildNodes
Returns true if this node has any child nodes.
(Inherited from CompositeNode.)
Public propertyCode exampleHasImage
Returns true if the shape has image bytes or links an image.
Public propertyCode exampleHasSmartArt
Returns true if this Shape has a SmartArt object.
Public propertyCode exampleHeight
Gets or sets the height of the containing block of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleHorizontalAlignment
Specifies how the shape is positioned horizontally.
(Inherited from ShapeBase.)
Public propertyCode exampleHorizontalRuleFormat
Provides access to the properties of the horizontal rule shape. For a shape that is not a horizontal rule, returns null.
Public propertyCode exampleHRef
Gets or sets the full hyperlink address for a shape.
(Inherited from ShapeBase.)
Public propertyCode exampleImageData
Provides access to the image of the shape. Returns null if the shape cannot have an image.
Public propertyCode exampleIsComposite
Returns true as this node can have child nodes.
(Inherited from CompositeNode.)
Public propertyCode exampleIsDeleteRevision
Returns true if this object was deleted in Microsoft Word while change tracking was enabled.
(Inherited from ShapeBase.)
Public propertyCode exampleIsGroup
Returns true if this is a group shape.
(Inherited from ShapeBase.)
Public propertyCode exampleIsHorizontalRule
Returns true if this shape is a horizontal rule.
(Inherited from ShapeBase.)
Public propertyCode exampleIsImage
Returns true if this shape is an image shape.
(Inherited from ShapeBase.)
Public propertyCode exampleIsInline
A quick way to determine if this shape is positioned inline with text.
(Inherited from ShapeBase.)
Public propertyCode exampleIsInsertRevision
Returns true if this object was inserted in Microsoft Word while change tracking was enabled.
(Inherited from ShapeBase.)
Public propertyCode exampleIsLayoutInCell
Gets or sets a flag indicating whether the shape is displayed inside a table or outside of it.
(Inherited from ShapeBase.)
Public propertyCode exampleIsMoveFromRevision
Returns true if this object was moved (deleted) in Microsoft Word while change tracking was enabled.
(Inherited from ShapeBase.)
Public propertyCode exampleIsMoveToRevision
Returns true if this object was moved (inserted) in Microsoft Word while change tracking was enabled.
(Inherited from ShapeBase.)
Public propertyCode exampleIsSignatureLine
Indicates that shape is a SignatureLine.
(Inherited from ShapeBase.)
Public propertyCode exampleIsTopLevel
Returns true if this shape is not a child of a group shape.
(Inherited from ShapeBase.)
Public propertyCode exampleIsWordArt
Returns true if this shape is a WordArt object.
(Inherited from ShapeBase.)
Public propertyCode exampleLastChild
Gets the last child of the node.
(Inherited from CompositeNode.)
Public propertyCode exampleLastParagraph
Gets the last paragraph in the shape.
Public propertyCode exampleLeft
Gets or sets the position of the left edge of the containing block of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleMarkupLanguage
Gets MarkupLanguage used for this graphic object.
(Inherited from ShapeBase.)
Public propertyCode exampleName
Gets or sets the optional shape name.
(Inherited from ShapeBase.)
Public propertyCode exampleNextSibling
Gets the node immediately following this node.
(Inherited from Node.)
Public propertyCode exampleNodeType
Returns Shape.
(Overrides NodeNodeType.)
Public propertyCode exampleOleFormat
Provides access to the OLE data of a shape. For a shape that is not an OLE object or ActiveX control, returns null.
Public propertyCode exampleParentNode
Gets the immediate parent of this node.
(Inherited from Node.)
Public propertyCode exampleParentParagraph
Returns the immediate parent paragraph.
(Inherited from ShapeBase.)
Public propertyCode examplePreviousSibling
Gets the node immediately preceding this node.
(Inherited from Node.)
Public propertyCode exampleRange
Returns a Range object that represents the portion of a document that is contained in this node.
(Inherited from Node.)
Public propertyCode exampleRelativeHorizontalPosition
Specifies relative to what the shape is positioned horizontally.
(Inherited from ShapeBase.)
Public propertyCode exampleRelativeVerticalPosition
Specifies relative to what the shape is positioned vertically.
(Inherited from ShapeBase.)
Public propertyCode exampleRight
Gets the position of the right edge of the containing block of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleRotation
Defines the angle (in degrees) that a shape is rotated. Positive value corresponds to clockwise rotation angle.
(Inherited from ShapeBase.)
Public propertyCode exampleScreenTip
Defines the text displayed when the mouse pointer moves over the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleShadowEnabled
Returns true if a shadow effect is enabled.
Public propertyCode exampleShapeType
Gets the shape type.
(Inherited from ShapeBase.)
Public propertyCode exampleSignatureLine
Gets SignatureLine object if the shape is a signature line. Returns null otherwise.
Public propertyCode exampleSizeInPoints
Gets the size of the shape in points.
(Inherited from ShapeBase.)
Public propertyCode exampleStoryType
Returns Textbox.
Public propertyCode exampleStroke
Defines a stroke for a shape.
Public propertyCode exampleStrokeColor
Defines the color of a stroke.
Public propertyCode exampleStroked
Defines whether the path will be stroked.
Public propertyCode exampleStrokeWeight
Defines the brush thickness that strokes the path of a shape in points.
Public propertyCode exampleTarget
Gets or sets the target frame for the shape hyperlink.
(Inherited from ShapeBase.)
Public propertyCode exampleTextBox
Defines attributes that specify how text is displayed in a shape.
Public propertyCode exampleTextPath
Defines the text of the text path (of a WordArt object).
Public propertyCode exampleTitle
Gets or sets the title (caption) of the current shape object.
(Inherited from ShapeBase.)
Public propertyCode exampleTop
Gets or sets the position of the top edge of the containing block of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleVerticalAlignment
Specifies how the shape is positioned vertically.
(Inherited from ShapeBase.)
Public propertyCode exampleWidth
Gets or sets the width of the containing block of the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleWrapSide
Specifies how the text is wrapped around the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleWrapType
Defines whether the shape is inline or floating. For floating shapes defines the wrapping mode for text around the shape.
(Inherited from ShapeBase.)
Public propertyCode exampleZOrder
Determines the display order of overlapping shapes.
(Inherited from ShapeBase.)
Methods
  NameDescription
Public methodCode exampleAccept
Accepts a visitor.
(Overrides NodeAccept(DocumentVisitor).)
Public methodCode exampleAdjustWithEffects
Adds to the source rectangle values of the effect extent and returns the final rectangle.
(Inherited from ShapeBase.)
Public methodCode exampleAppendChild
Adds the specified node to the end of the list of child nodes for this node.
(Inherited from CompositeNode.)
Public methodCode exampleClone (Inherited from Node.)
Public methodEquals (Inherited from Object.)
Public methodCode exampleGetAncestor(Type)
Gets the first ancestor of the specified object type.
(Inherited from Node.)
Public methodCode exampleGetAncestor(NodeType)
Gets the first ancestor of the specified NodeType.
(Inherited from Node.)
Public methodCode exampleGetChild
Returns an Nth child node that matches the specified type.
(Inherited from CompositeNode.)
Public methodCode exampleGetChildNodes
Returns a live collection of child nodes that match the specified type.
(Inherited from CompositeNode.)
Public methodCode exampleGetEnumerator
Provides support for the for each style iteration over the child nodes of this node.
(Inherited from CompositeNode.)
Public methodGetHashCode (Inherited from Object.)
Public methodCode exampleGetShapeRenderer
Creates and returns an object that can be used to render this shape into an image.
(Inherited from ShapeBase.)
Public methodCode exampleGetText
Gets the text of this node and of all its children.
(Inherited from CompositeNode.)
Public methodGetType (Inherited from Object.)
Public methodCode exampleIndexOf
Returns the index of the specified child node in the child node array.
(Inherited from CompositeNode.)
Public methodCode exampleInsertAfter
Inserts the specified node immediately after the specified reference node.
(Inherited from CompositeNode.)
Public methodCode exampleInsertBefore
Inserts the specified node immediately before the specified reference node.
(Inherited from CompositeNode.)
Public methodCode exampleLocalToParent
Converts a value from the local coordinate space into the coordinate space of the parent shape.
(Inherited from ShapeBase.)
Public methodCode exampleNextPreOrder
Gets next node according to the pre-order tree traversal algorithm.
(Inherited from Node.)
Public methodCode examplePrependChild
Adds the specified node to the beginning of the list of child nodes for this node.
(Inherited from CompositeNode.)
Public methodCode examplePreviousPreOrder
Gets the previous node according to the pre-order tree traversal algorithm.
(Inherited from Node.)
Public methodCode exampleRemove
Removes itself from the parent.
(Inherited from Node.)
Public methodCode exampleRemoveAllChildren
Removes all the child nodes of the current node.
(Inherited from CompositeNode.)
Public methodCode exampleRemoveChild
Removes the specified child node.
(Inherited from CompositeNode.)
Public methodCode exampleRemoveSmartTags
Removes all SmartTag descendant nodes of the current node.
(Inherited from CompositeNode.)
Public methodCode exampleSelectNodes
Selects a list of nodes matching the XPath expression.
(Inherited from CompositeNode.)
Public methodCode exampleSelectSingleNode
Selects the first Node that matches the XPath expression.
(Inherited from CompositeNode.)
Public methodToString (Inherited from Object.)
Public methodCode exampleToString(SaveFormat)
Exports the content of the node into a string in the specified format.
(Inherited from Node.)
Public methodCode exampleToString(SaveOptions)
Exports the content of the node into a string using the specified save options.
(Inherited from Node.)
Remarks

Using the Shape class you can create or modify shapes in a Microsoft Word document.

An important property of a shape is its ShapeType. Shapes of different types can have different capabilities in a Word document. For example, only image and OLE shapes can have images inside them. Most of the shapes can have text, but not all.

Shapes that can have text, can contain Paragraph and Table nodes as children.

Examples
Shows how to extract images from a document and save them as files.
public void ExtractImagesToFiles()
{
    Document doc = new Document(MyDir + "Images.docx");

    NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);
    int imageIndex = 0;
    foreach (Shape shape in shapes.OfType<Shape>())
    {
        if (shape.HasImage)
        {
            string imageFileName =
                $"File.ExtractImagesToFiles.{imageIndex}{FileFormatUtil.ImageTypeToExtension(shape.ImageData.ImageType)}";
            shape.ImageData.Save(ArtifactsDir + imageFileName);
            imageIndex++;
        }
    }
}
Examples
Shows how to insert a floating image in the middle of a page.
// This creates a builder and also an empty document inside the builder
DocumentBuilder builder = new DocumentBuilder();

// By default, the image is inline
Shape shape = builder.InsertImage(ImageDir + "Logo.jpg");

// Make the image float, put it behind text and center on the page
shape.WrapType = WrapType.None;
shape.BehindText = true;
shape.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
shape.HorizontalAlignment = HorizontalAlignment.Center;
shape.RelativeVerticalPosition = RelativeVerticalPosition.Page;
shape.VerticalAlignment = VerticalAlignment.Center;

builder.Document.Save(ArtifactsDir + "Image.CreateFloatingPageCenter.doc");
Examples
Shows how to delete all shapes from a document.
// Here we get all shapes from the document node, but you can do this for any smaller
// node too, for example delete shapes from a single section or a paragraph
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert 2 shapes
builder.InsertShape(ShapeType.Rectangle, 400, 200);
builder.InsertShape(ShapeType.Star, 300, 300);

// Insert a GroupShape with an inner shape
GroupShape group = new GroupShape(doc);
group.Bounds = new RectangleF(100, 50, 200, 100);
group.CoordOrigin = new Point(-1000, -500);

Shape subShape = new Shape(doc, ShapeType.Cube);
subShape.Width = 500;
subShape.Height = 700;
subShape.Left = 0;
subShape.Top = 0;
group.AppendChild(subShape);
builder.InsertNode(group);

Assert.AreEqual(3, doc.GetChildNodes(NodeType.Shape, true).Count);
Assert.AreEqual(1, doc.GetChildNodes(NodeType.GroupShape, true).Count);

// Delete all Shape nodes
NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);
shapes.Clear();

// The GroupShape node is still present even though there are no sub Shapes
Assert.AreEqual(1, doc.GetChildNodes(NodeType.GroupShape, true).Count);
Assert.AreEqual(0, doc.GetChildNodes(NodeType.Shape, true).Count);

// GroupShapes also have to be deleted manually
NodeCollection groupShapes = doc.GetChildNodes(NodeType.GroupShape, true);
groupShapes.Clear();

Assert.AreEqual(0, doc.GetChildNodes(NodeType.GroupShape, true).Count);
Assert.AreEqual(0, doc.GetChildNodes(NodeType.Shape, true).Count);
See Also