【问题标题】:Replacing images in power point using c#使用 c# 替换 power point 中的图像
【发布时间】:2014-09-29 06:51:24
【问题描述】:

在 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

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

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

【问题讨论】:

    标签: c# asp.net powerpoint office-addins


    【解决方案1】:

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

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

      pic.ZOrder(MsoZOrderCmd.msoSendToBack); 
    

    希望它有效..!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多