GroupShape

GroupShape class

表示文档中的一组形状。

要了解更多信息,请访问如何将组形状添加到 Word 文档中文档文章。

public class GroupShape : ShapeBase

构造函数

姓名描述
GroupShape(DocumentBase)创建一个新的组形状。

特性

姓名描述
AllowOverlap { get; set; }获取或设置一个值,该值指定此形状是否可以与其他形状重叠。
AlternativeText { get; set; }定义要显示的替代文本,而不是图形。
AnchorLocked { get; set; }指定形状的锚点是否被锁定。
AspectRatioLocked { get; set; }指定是否锁定形状的纵横比。
BehindText { get; set; }指定形状是在文本下方还是上方。
Bottom { get; }获取形状包含块的底部边缘的位置。
Bounds { get; set; }获取或设置形状包含块的位置和大小。
BoundsInPoints { get; }获取形状的包含块相对于最顶部形状的锚点的位置和大小(以点为单位)。
BoundsWithEffects { get; }获取该形状对象在应用绘图效果后的最终范围。 值以点为单位进行测量。
CanHaveImage { get; }返回真的如果形状类型允许形状具有图像。
CoordOrigin { get; set; }该形状的包含块左上角的坐标。
CoordSize { get; set; }该形状的包含块内坐标空间的宽度和高度。
Count { get; }获取此节点的直接子节点的数量。
CustomNodeId { get; set; }指定自定义节点标识符。
DistanceBottom { get; set; }返回或设置文档文本与形状底部边缘之间的距离(以磅为单位)。
DistanceLeft { get; set; }返回或设置文档文本与形状左边缘之间的距离(以磅为单位)。
DistanceRight { get; set; }返回或设置文档文本与形状右边缘之间的距离(以磅为单位)。
DistanceTop { get; set; }返回或设置文档文本与形状上边缘之间的距离(以磅为单位)。
virtual Document { get; }获取该节点所属的文档。
Fill { get; }获取形状的填充格式。
FirstChild { get; }获取节点的第一个子节点。
FlipOrientation { get; set; }切换形状的方向。
Font { get; }提供对此对象的字体格式的访问。
HasChildNodes { get; }返回真的如果该节点有任何子节点.
Height { get; set; }获取或设置形状包含块的高度。
HeightRelative { get; set; }获取或设置表示形状相对高度百分比的值。
HorizontalAlignment { get; set; }指定形状如何水平定位。
HRef { get; set; }获取或设置形状的完整超链接地址。
override IsComposite { get; }返回真的因为该节点可以有子节点。
IsDecorative { get; set; }获取或设置指定形状在文档中是否为装饰性的标志。
IsDeleteRevision { get; }如果在启用更改跟踪时在 Microsoft Word 中删除了此对象,则返回 true。
IsGroup { get; }返回真的如果这是一个团体形状.
IsHorizontalRule { get; }返回真的如果这个形状是水平尺.
IsImage { get; }返回真的如果这个形状是图像形状.
IsInline { get; }确定此形状是否与文本内联放置的快速方法。
IsInsertRevision { get; }如果在启用更改跟踪的情况下将此对象插入到 Microsoft Word 中,则返回 true。
IsLayoutInCell { get; set; }获取或设置一个标志,指示形状是显示在表格内部还是表格外部。
IsMoveFromRevision { get; }返回真的如果启用更改跟踪时在 Microsoft Word 中移动(删除)此对象。
IsMoveToRevision { get; }返回真的如果在启用更改跟踪的情况下在 Microsoft Word 中移动(插入)此对象。
IsSignatureLine { get; }表示形状是SignatureLine.
IsTopLevel { get; }返回真的如果此形状不是组形状的子项.
IsWordArt { get; }返回真的如果此形状是艺术字对象.
LastChild { get; }获取节点的最后一个子节点。
Left { get; set; }获取或设置形状包含块的左边缘位置。
LeftRelative { get; set; }获取或设置表示形状相对左侧位置(以百分比表示)的值。
MarkupLanguage { get; }获取用于此图形对象的 MarkupLanguage。
Name { get; set; }获取或设置可选形状名称。
NextSibling { get; }获取紧随该节点的下一个节点。
override NodeType { get; }返回GroupShape.
ParentNode { get; }获取此节点的直接父节点。
ParentParagraph { get; }返回直接父段落。
PreviousSibling { get; }获取紧邻此节点之前的节点。
Range { get; }返回一个Range表示此节点中包含的文档部分的对象。
RelativeHorizontalPosition { get; set; }指定形状相对于水平位置的位置。
RelativeHorizontalSize { get; set; }获取或设置形状在水平方向的相对大小值。
RelativeVerticalPosition { get; set; }指定相对于形状垂直定位的位置。
RelativeVerticalSize { get; set; }获取或设置形状在垂直方向的相对大小值。
Right { get; }获取形状包含块的右边缘位置。
Rotation { get; set; }定义形状旋转的角度(以度为单位)。 正值对应于顺时针旋转角度。
ScreenTip { get; set; }定义当鼠标指针移动到形状上时显示的文本。
ShadowFormat { get; }获取形状的阴影格式。
ShapeType { get; }获取形状类型。
SizeInPoints { get; }获取形状的大小(以磅为单位)。
Target { get; set; }获取或设置形状超链接的目标框架。
Title { get; set; }获取或设置当前形状对象的标题 (caption)。
Top { get; set; }获取或设置形状包含块的顶部边缘的位置。
TopRelative { get; set; }获取或设置表示形状相对顶部位置(以百分比表示)的值。
VerticalAlignment { get; set; }指定形状如何垂直定位。
Width { get; set; }获取或设置形状包含块的宽度。
WidthRelative { get; set; }获取或设置表示形状相对宽度百分比的值。
WrapSide { get; set; }指定文本如何环绕形状。
WrapType { get; set; }定义形状是内联还是浮动。对于浮动形状,定义形状周围文本的环绕模式。
ZOrder { get; set; }确定重叠形状的显示顺序。

方法

姓名描述
override Accept(DocumentVisitor)接受访客。
AdjustWithEffects(RectangleF)添加效果范围的源矩形值并返回最终矩形。
AppendChild(Node)将指定节点添加到该节点的子节点列表的末尾。
Clone(bool)创建节点的副本。
CreateNavigator()创建可用于遍历和读取节点的导航器。
FetchInheritedShapeAttr(int)保留供系统使用。 IShapeAttrSource.
FetchShapeAttr(int)保留供系统使用。 IShapeAttrSource.
GetAncestor(NodeType)获取指定的第一个祖先NodeType.
GetAncestor(Type)获取指定对象类型的第一个祖先。
GetChild(NodeType, int, bool)返回与指定类型匹配的第 N 个子节点。
GetChildNodes(NodeType, bool)返回与指定类型匹配的子节点的实时集合。
GetDirectShapeAttr(int)保留供系统使用。 IShapeAttrSource.
GetEnumerator()为该节点的子节点上的每个样式迭代提供支持。
GetShapeRenderer()创建并返回一个可用于将此形状渲染为图像的对象。
override GetText()获取此节点及其所有子节点的文本。
IndexOf(Node)返回子节点数组中指定子节点的索引。
InsertAfter(NodeNode)在指定的引用节点之后立即插入指定的节点。
InsertBefore(NodeNode)在指定的引用节点之前插入指定的节点。
LocalToParent(PointF)将局部坐标空间中的值转换为父形状的坐标空间。
NextPreOrder(Node)根据先序树遍历算法获取下一个节点。
PrependChild(Node)将指定节点添加到该节点的子节点列表的开头。
PreviousPreOrder(Node)根据先序树遍历算法获取前一个节点。
Remove()将自身从父级中删除。
RemoveAllChildren()删除当前节点的所有子节点。
RemoveChild(Node)删除指定的子节点。
RemoveShapeAttr(int)保留供系统使用。 IShapeAttrSource.
RemoveSmartTags()删除所有SmartTag当前节点的后代节点.
SelectNodes(string)选择与 XPath 表达式匹配的节点列表。
SelectSingleNode(string)选择第一个Node与 XPath 表达式匹配。
SetShapeAttr(int, object)保留供系统使用。 IShapeAttrSource.
ToString(SaveFormat)将节点的内容导出为指定格式的字符串。
ToString(SaveOptions)使用指定的保存选项将节点的内容导出到字符串中。

评论

AGroupShape是一个复合节点并且可以有ShapeGroupShape节点作为子节点。

每个GroupShape为其子形状定义一个新的坐标系。 坐标系是使用CoordSizeCoordOrigin特性。

例子

演示如何创建一组形状,并使用文档访问者打印其内容。

public void GroupOfShapes()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    // 如果需要创建“NonPrimitive”形状,例如 SingleCornerSnipped、TopCornersSnipped、DiagonalCornersSnipped,
    // TopCornersOneRoundedOneSnipped、SingleCornerRounded、TopCornersRounded、DiagonalCornersRounded
    // 请使用 DocumentBuilder.InsertShape 方法。
    Shape balloon = new Shape(doc, ShapeType.Balloon)
    {
        Width = 200, 
        Height = 200,
        Stroke = { Color = Color.Red }
    };

    Shape cube = new Shape(doc, ShapeType.Cube)
    {
        Width = 100, 
        Height = 100,
        Stroke = { Color = Color.Blue }
    };

    GroupShape group = new GroupShape(doc);
    group.AppendChild(balloon);
    group.AppendChild(cube);

    Assert.True(group.IsGroup);

    builder.InsertNode(group);

    ShapeGroupPrinter printer = new ShapeGroupPrinter();
    group.Accept(printer);

    Console.WriteLine(printer.GetText());
}

/// <summary>
/// 将访问过的形状组的内容打印到控制台。
/// </summary>
public class ShapeGroupPrinter : DocumentVisitor
{
    public ShapeGroupPrinter()
    {
        mBuilder = new StringBuilder();
    }

    public string GetText()
    {
        return mBuilder.ToString();
    }

    public override VisitorAction VisitGroupShapeStart(GroupShape groupShape)
    {
        mBuilder.AppendLine("Shape group started:");
        return VisitorAction.Continue;
    }

    public override VisitorAction VisitGroupShapeEnd(GroupShape groupShape)
    {
        mBuilder.AppendLine("End of shape group");
        return VisitorAction.Continue;
    }

    public override VisitorAction VisitShapeStart(Shape shape)
    {
        mBuilder.AppendLine("\tShape - " + shape.ShapeType + ":");
        mBuilder.AppendLine("\t\tWidth: " + shape.Width);
        mBuilder.AppendLine("\t\tHeight: " + shape.Height);
        mBuilder.AppendLine("\t\tStroke color: " + shape.Stroke.Color);
        mBuilder.AppendLine("\t\tFill color: " + shape.Fill.ForeColor);
        return VisitorAction.Continue;
    }

    public override VisitorAction VisitShapeEnd(Shape shape)
    {
        mBuilder.AppendLine("\tEnd of shape");
        return VisitorAction.Continue;
    }

    private readonly StringBuilder mBuilder;
}

也可以看看