Shape

Shape class

表示绘图层中的对象,例如自选图形、文本框、自由格式、OLE 对象、ActiveX 控件或图片。

public sealed class Shape : ShapeBase

构造函数

姓名 描述
Shape(DocumentBase, ShapeType) 创建一个新的形状对象。

特性

姓名 描述
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; } 如果形状类型允许形状具有图像,则返回 true。
Chart { get; } 如果此形状有图表,则提供对图表属性的访问。
ChildNodes { 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; } 获取该节点所属的文档。
ExtrusionEnabled { get; } 如果启用了挤压效果,则返回 true。
Fill { get; } 获取形状的填充格式。
FillColor { get; set; } 定义填充形状闭合路径的画笔颜色。
Filled { get; set; } 确定形状的闭合路径是否会被填充。
FirstChild { get; } 获取节点的第一个子节点。
FirstParagraph { get; } 获取形状中的第一段。
FlipOrientation { get; set; } 切换形状的方向。
Font { get; } 提供对此对象的字体格式的访问。
HasChart { get; } 如果此 Shape 有一个Chart.
HasChildNodes { get; } 如果此节点有任何子节点,则返回 true。
HasImage { get; } 如果形状具有图像字节或链接图像,则返回 true。
HasSmartArt { get; } 如果此 Shape 具有 SmartArt 对象,则返回 true。
Height { get; set; } 获取或设置形状包含块的高度。
HorizontalAlignment { get; set; } 指定形状如何水平放置。
HorizontalRuleFormat { get; } 提供对水平规则形状属性的访问。 对于不是水平规则的形状,返回 null。
HRef { get; set; } 获取或设置形状的完整超链接地址。
ImageData { get; } 提供对形状图像的访问。 如果形状不能有图像,则返回 null。
override IsComposite { get; } 返回真,因为该节点可以有子节点。
IsDecorative { get; set; } 获取或设置指定形状在文档中是否具有装饰性的标志。
IsDeleteRevision { get; } 如果在启用更改跟踪时在 Microsoft Word 中删除了此对象,则返回 true。
IsGroup { get; } 如果这是一个组形状,则返回 true。
IsHorizontalRule { get; } 如果此形状是水平规则,则返回 true。
IsImage { get; } 如果此形状是图像形状,则返回 true。
IsInline { get; } 一种快速确定此形状是否与文本内联的方法。
IsInsertRevision { get; } 如果在启用更改跟踪时将此对象插入 Microsoft Word,则返回 true。
IsLayoutInCell { get; set; } 获取或设置一个标志,指示形状是显示在表格内还是表格外。
IsMoveFromRevision { get; } 返回 真的如果启用更改跟踪时此对象在 Microsoft Word 中被移动(删除)。
IsMoveToRevision { get; } 返回 真的如果启用更改跟踪时在 Microsoft Word 中移动(插入)此对象。
IsSignatureLine { get; } 表示形状是 SignatureLine.
IsTopLevel { get; } 如果此形状不是组形状的子形状,则返回 true。
IsWordArt { get; } 如果此形状是艺术字对象,则返回 true。
LastChild { get; } 获取节点的最后一个子节点。
LastParagraph { get; } 获取形状中的最后一段。
Left { get; set; } 获取或设置形状包含块的左边缘位置。
MarkupLanguage { get; } 获取用于此图形对象的 MarkupLanguage。
Name { get; set; } 获取或设置可选的形状名称。
NextSibling { get; } 获取紧跟此节点的节点。
override NodeType { get; } 返回Shape.
OleFormat { get; } 提供对形状的 OLE 数据的访问。对于不是 OLE 对象或 ActiveX 控件的形状,返回 null.
ParentNode { get; } 获取此节点的直接父节点。
ParentParagraph { get; } 返回直接父段落。
PreviousSibling { get; } 获取紧接在此节点之前的节点。
Range { get; } 返回一个 范围表示此节点中包含的文档部分的对象。
RelativeHorizontalPosition { get; set; } 指定相对于水平位置的形状。
RelativeVerticalPosition { get; set; } 指定相对于形状垂直定位的位置。
Right { get; } 获取形状包含块的右边缘位置。
Rotation { get; set; } 定义形状旋转的角度(以度为单位)。 正值对应于顺时针旋转角度。
ScreenTip { get; set; } 定义当鼠标指针移到形状上时显示的文本。
ShadowEnabled { get; } 如果启用了阴影效果,则返回 true。
ShadowFormat { get; } 获取形状的阴影格式。
ShapeType { get; } 获取形状类型。
SignatureLine { get; } 获取SignatureLine如果形状是签名线,则对象。退货 无效的否则。
SizeInPoints { get; } 以点为单位获取形状的大小。
StoryType { get; } 返回Textbox.
Stroke { get; } 定义形状的笔触。
StrokeColor { get; set; } 定义笔画的颜色。
Stroked { get; set; } 定义路径是否会被描边。
StrokeWeight { get; set; } 以点为单位定义描边形状路径的画笔厚度。
Target { get; set; } 获取或设置形状超链接的目标框架。
TextBox { get; } 定义指定文本如何在形状中显示的属性。
TextPath { get; } 定义文本路径的文本(艺术字对象)。
Title { get; set; } 获取或设置当前形状对象的标题(标题)。
Top { get; set; } 获取或设置形状包含块的上边缘的位置。
VerticalAlignment { get; set; } 指定形状如何垂直定位。
Width { get; set; } 获取或设置形状包含块的宽度。
WrapSide { get; set; } 指定文本如何环绕形状。
WrapType { get; set; } 定义形状是内联的还是浮动的。对于浮动形状,定义形状周围文本的环绕模式。
ZOrder { get; set; } 确定重叠形状的显示顺序。

方法

姓名 描述
override Accept(DocumentVisitor) 接受访客。
AdjustWithEffects(RectangleF) 添加到效果范围的源矩形值并返回最终矩形。
AppendChild(Node) 将指定节点添加到该节点的子节点列表的末尾。
Clone(bool) 创建节点的副本。
CreateNavigator() 保留供系统使用。 IXPathNavigable.
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(Node, Node) 在指定参考节点之后立即插入指定节点。
InsertBefore(Node, Node) 在指定的参考节点之前插入指定的节点。
LocalToParent(PointF) 将一个值从局部坐标空间转换为父图形的坐标空间。
NextPreOrder(Node) 根据前序树遍历算法获取下一个节点。
PrependChild(Node) 将指定节点添加到此节点的子节点列表的开头。
PreviousPreOrder(Node) 根据前序树遍历算法获取上一个节点。
Remove() 从父级中移除自身。
RemoveAllChildren() 移除当前节点的所有子节点。
RemoveChild(Node) 移除指定的子节点。
RemoveShapeAttr(int) 保留供系统使用。 IShapeAttrSource.
RemoveSmartTags() 删除所有SmartTag当前节点的后代节点。
SelectNodes(string) 选择与 XPath 表达式匹配的节点列表。
SelectSingleNode(string) 选择与 XPath 表达式匹配的第一个节点。
SetShapeAttr(int, object) 保留供系统使用。 IShapeAttrSource.
ToString(SaveFormat) 将节点的内容导出为指定格式的字符串。
ToString(SaveOptions) 使用指定的保存选项将节点的内容导出为字符串。
UpdateSmartArtDrawing() 使用 Aspose.Words 的 SmartArt 冷渲染引擎更新 SmartArt 预渲染绘图。

评论

使用Shape类,您可以在 Microsoft Word 文档中创建或修改形状。

形状的一个重要属性是它的ShapeType.在 Word 文档中,不同 类型的形状可以具有不同的功能。例如,只有图像和 OLE 形状 可以在其中包含图像。大多数形状都可以有文本,但不是全部。

可以有文本的形状,可以包含ParagraphTable节点作为子节点。

例子

演示如何将浮动图像插入页面中心。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 插入将出现在重叠文本后面的浮动图像,并将其与页面中心对齐。
Shape shape = builder.InsertImage(ImageDir + "Logo.jpg");
shape.WrapType = WrapType.None;
shape.BehindText = true;
shape.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
shape.RelativeVerticalPosition = RelativeVerticalPosition.Page;
shape.HorizontalAlignment = HorizontalAlignment.Center;
shape.VerticalAlignment = VerticalAlignment.Center;

doc.Save(ArtifactsDir + "Image.CreateFloatingPageCenter.docx");

演示如何从文档中提取图像,并将它们作为单独的文件保存到本地文件系统。

Document doc = new Document(MyDir + "Images.docx");

// 从文档中获取形状的集合,
// 并将每个形状的图像数据与图像一起作为文件保存到本地文件系统。
NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);

Assert.AreEqual(9, shapes.Count(s => ((Shape)s).HasImage));

int imageIndex = 0;
foreach (Shape shape in shapes.OfType<Shape>())
{
    if (shape.HasImage)
    {
        // 形状的图像数据可能包含多种可能的图像格式的图像。 
        // 我们可以根据图像的格式自动确定每个图像的文件扩展名。
        string imageFileName =
            $"File.ExtractImages.{imageIndex}{FileFormatUtil.ImageTypeToExtension(shape.ImageData.ImageType)}";
        shape.ImageData.Save(ArtifactsDir + imageFileName);
        imageIndex++;
    }
}

演示如何从文档中删除所有形状。

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 插入两个形状以及一个包含另一个形状的组形状。
builder.InsertShape(ShapeType.Rectangle, 400, 200);
builder.InsertShape(ShapeType.Star, 300, 300);

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);

// 从文档中删除所有 Shape 节点。
NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);
shapes.Clear();

// 所有形状都消失了,但组形状仍在文档中。
Assert.AreEqual(1, doc.GetChildNodes(NodeType.GroupShape, true).Count);
Assert.AreEqual(0, doc.GetChildNodes(NodeType.Shape, true).Count);

// 分别删除所有组形状。
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);

也可以看看