指定形状的类型或形状范围。
名称 |
值 |
说明 |
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++;
}