指定形状的类型或形状范围。
名称 | 值 | 说明 |
msoAutoShape | 1 | 自选图形。 |
msoCallout | 2 | 标注。 |
msoCanvas | 20 | 画布。 |
msoChart | 3 | 图。 |
msoComment | 4 | 批注。 |
msoDiagram | 21 | 图表。 |
msoEmbeddedOLEObject | 7 | 嵌入的 OLE 对象。 |
msoFormControl | 8 | 窗体控件。 |
msoFreeform | 5 | 任意多边形。 |
msoGroup | 6 | 组合。 |
msoIgxGraphic | 24 | SmartArt 图形 |
msoInk | 22 | 墨迹。 |
msoInkComment | 23 | 墨迹批注。 |
msoLine | 9 | 线条。 |
msoLinkedOLEObject | 10 | 链接 OLE 对象。 |
msoLinkedPicture | 11 | 链接图片。 |
msoMedia | 16 | 媒体。 |
msoOLEControlObject | 12 | OLE 控件对象。 |
msoPicture | 13 | 图片。 |
msoPlaceholder | 14 | 占位符。 |
msoScriptAnchor | 18 | 脚本定位标记。 |
msoShapeTypeMixed | -2 | 混和形状类型。 |
msoTable | 19 | 表。 |
msoTextBox | 17 | 文本框。 |
msoTextEffect | 15 | 文本效果。 |
InlineShape表示的类型其实不只是图片,还包括OLE, ACTIVE X等。
下面是MSDN中的定义:Represents an object in the text layer of a document(表示文档中文本层的一个对象)。
可以通过InlineShape的Type属性获得这个对象的具体类型。Type是一个WdInlineShapeType的枚举类型。WdInlineShapeType可以说下面的常数之一:
wdInlineShapeEmbeddedOLEObject 嵌入式OLE对象
wdInlineShapeHorizontalLine 水平线
wdInlineShapeLinkedOLEObject 链接式OLE对象
wdInlineShapeLinkedPicture 链接式图片
wdInlineShapeLinkedPictureHorizontalLine(…)
wdInlineShapeOLEControlObject OLE控制对象
wdInlineShapeOWSAnchor OWS锚点
wdInlineShapePicture 嵌入式图片
wdInlineShapePictureBullet 图片占位符
wdInlineShapePictureHorizontalLine (…)
wdInlineShapeScriptAnchor (…)
设置图片的“版式”为嵌入式那么这个图片在WORD文档中就用InlineShape来表示,而Shape表示的图片格式是其他的版式,处于Drawing层。不过其他的特性基本上是一致的。
下面是要用到的一些变量:(初始化部分没有写)
ApplicationClass wordApp;
Document wordDoc;
object missing;
List<InlineShape> allShape; //用InlineShape类型保存图片
List<Image> allImage; //用Image类型保存图片
先来看看提取InlineShape的步骤:
1.返回当前文档中所有InlineShapes。如果是嵌入式图片就加入集合中。
InlineShapes insh = le="COLOR: black">wordDoc.InlineShapes;
for (int i = 0; i < insh.Count; i++)
{
if (insh[i].Type == WdInlineShapeType.wdInlineShapePicture)
allShape.Add(insh[i]);
}
2.先选中一个图片,再通过Selection发送到剪贴板,再从剪贴板得到一个图片对象。
Microsoft.Office.Interop.Word.Selection sel;
System.Drawing.Image returnImage = null;
foreach (InlineShape ins in allShape)
{
ins.Select();
sel = wordApp.Selection;
if (sel.Type == WdSelectionType.wdSelectionInlineShape)
{
sel.CopyAsPicture();
if (Clipboard.ContainsImage())
{
returnImage = Clipboard.GetImage();
allImage.Add(returnImage);
}
}
}
下面是保存图片到文件中,Image类型的Save方法可以完成这个工作。文件类型可以说JPG,GIF,BMP等。
int i = 0;
foreach (Image im in allImage)
{
im.Save("c://图片" + i.ToString() + ".jpg",ImageFormat.Jpeg);
i++;
}