PowerPoint Interop添加图片的顺序很重要?

时间:2018-02-28 10:16:09

标签: c# .net interop powerpoint powerpoint-interop

我必须自动创建一个powerpoint演示文稿。

导致故障的主幻灯片有2个图片框和一些文本字段。

我正在通过获取带有ID的shape(已准备好的图片框)并在shape.Leftshape.Right位置添加图片来添加图片。

现在变得很奇怪...... 当我这样做时,图片定位正确。

var shape = slide.Shapes[ContentFields.Print.WithImage.Bild];
slide.Shapes.AddPicture(artikel.BildPath, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height);

shape = slide.Shapes[ContentFields.Print.WithImage.Kanal];
slide.Shapes.AddPicture(artikel.KanalIconPath, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height);

但是当我首先添加Kanal时,图片会混淆(Kanal位于Bild和Bild的位置,位于Kanal的位置)。

var shape = slide.Shapes[ContentFields.Print.WithImage.Kanal];
slide.Shapes.AddPicture(artikel.KanalIconPath, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height);

shape = slide.Shapes[ContentFields.Print.WithImage.Bild];
slide.Shapes.AddPicture(artikel.BildPath, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height);

为什么会这样? 我正在使用Id获得正确的形状,他们为什么会混淆? :-S

提前致谢

1 个答案:

答案 0 :(得分:1)

在PPT的至少某些版本中,如果将图片添加到包含空图片或内容占位符的幻灯片,则图片将添加到占位符,而不是作为新形状放置。

幻灯片中有两个占位符,第一个添加的图片将位于第一个占位符中,第二个占位符位于第二个占位符中,因此添加图片的顺序将很重要。

在没有占位符的幻灯片上尝试相同的代码;如果您需要形状来确定图片放置,请替换矩形。

或者,如果您需要保留占位符,请暂时添加" dummy"在添加图片之前将文本添加到任何空的内容占位符,然后删除虚拟文本。