替换形状中的图像,而不是添加新图像

时间:2017-04-21 08:49:03

标签: vb.net image vsto powerpoint shape

我有一个用VB.NET编写的VSTO,希望将所选图像最大化到后台。文档告诉我删除旧形状并使用AddPicture添加新形状,但我有一个模板,其中包含已存在的图像形状,AddPicture将图像放在其中一个形状中。

为了防止图像以错误的形状着陆,我真的只想用调整大小的图像替换原始图像。

这就是我所拥有的:

dim src as PowerPoint.Shape = PowerPoint.Selection.ShapeRange.Item(1)
src.Export(file1, PowerPoint.PpShapeFormat.ppShapeFormatPNG)
dim img as Image = BitMap.FromFile(file1)

然后是一些神奇的图像,然后:

img.Save(file2, PowerPoint.PpShapeFormat.ppShapeFormatPNG)

Dim _S As PowerPoint.Slide = ppApp.ActiveWindow.View.Slide
Dim _P As PowerPoint.Shape = _S.Shapes.AddPicture2(file2, MsoTriState.msoFalse, MsoTriState.msoTrue, 0, 0, _W, _H)

但是这会将图像置于错误的模板形状中。

有没有办法在不添加新形状的情况下实际替换形状中的图像?

1 个答案:

答案 0 :(得分:1)

您不能在形状内插入图像,只能(在某些情况下)在占位符内插入,并且您已经提到您特别不想这样做。

您可以使用图像填充形状,但除非您不介意图像变形,否则图像和形状的纵横比必须匹配。

建议:在添加新图像/形状之前,迭代幻灯片上的所有形状以查找占位符形状。如果任何占位符形状属于可以包含图像的类型(内容,图片和剪贴画占位符),请使用虚拟内容(内容的几个文本字符,其他两个的随机图片)填充它。添加你的图片;因为"图像能力"占位符已填充,图像将添加为新形状。然后删除您添加虚拟内容的每个形状。删除包含内容的占位符时,内容将被删除并保留原始的空占位符。