gpt4 book ai didi

c# - 使用c#替换power point中的图像

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:10 25 4
gpt4 key购买 nike

在 powerpoint 中,我放置了一些图表,其中每个图表包含不同的 guid。我已将 GUID 设置为它们的超链接。当单击刷新按钮时,我所做的是,将找到形状,然后将获得我已保存为每个图像的超链接的 guid,从每个图像并使用该 GUID 将用该形状的旧图像替换最近的图像.

foreach (var shape in presentation.Slides[slideno].Shapes)
{
var slide = (PPT.Slide)item;
if (j <= shapeCount)
{
string[] address = new string[] { };
string dskj = slide.Shapes[j].Name;
if (slide.Shapes[j].Name.Equals("DIAGRAM")//, StringComparison.InvariantCultureIgnoreCase)
&& slide.Shapes[j].ActionSettings[PPT.PpMouseActivation.ppMouseClick].Hyperlink.Address != null)
{
address = slide.Shapes[j].ActionSettings[PPT.PpMouseActivation.ppMouseClick].Hyperlink.Address.Split('*');
string Type = address[0];
string Guid = address[1];
if (Type == "D")
{
Session.path = presentation.Path;
if (Session.path != "")
Session.Repository.GetProjectInterface().PutDiagramImageToFile(address[1], Session.path + "\\" + address[1] + ".jpg", 1);
bool diagrm = false;
try
{
EA.Diagram diag = Session.Repository.GetDiagramByGuid(Guid);
diagrm = true;
}
catch
{
continue;
}
if (diagrm)
{
float Shapeleft = slide.Shapes[j].Left;
float Shapetop = slide.Shapes[j].Top;
float Shapewidth = slide.Shapes[j].Width;
float Shapeheight = slide.Shapes[j].Height;


slide.Shapes[j].Delete();

PPT.Shape pic = slide.Shapes.AddPicture(Session.path + "\\" + Guid + ".jpg", Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoTrue, Shapeleft, Shapetop, Shapewidth, Shapeheight);
pic.Name = "DIAGRAM";
pic.ActionSettings[PPT.PpMouseActivation.ppMouseClick].Hyperlink.Address = "D*" + Guid;

}
}
}
}

使用上面的代码,一切都很好。

address = slide.Shapes[j].ActionSettings[PPT.PpMouseActivation.ppMouseClick].Hyperlink.Address

在地址中,我将获得当前图像的超链接地址,但现在我的问题是,如果我在同一张幻灯片中有两个图像,那么当它在形状内循环时,它只会为两个图像提供相同的超链接图片。

**注意:**如果幻灯片中只有一张图片,则一切正常。

最佳答案

这是因为您要删除以前的形状并在同一位置插入一个新形状,但是每个形状都包含一个 ZOrderPosition,因为您删除了以前的形状并插入了一个新形状,所以 Zorderposition 会针对新形状进行更改,并且它将包含在下一次迭代中。因此,如果在一个形状中插入多个图像,它只会刷新一些图像。解决方案:

删除现有形状后,插入新形状时也设置其 ZorderPosition。

  pic.ZOrder(MsoZOrderCmd.msoSendToBack); 

希望它有用..!!

关于c# - 使用c#替换power point中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26094014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com