【问题标题】:C# and PowerPoint 2010 integrationC# 和 PowerPoint 2010 集成
【发布时间】:2013-12-09 21:58:24
【问题描述】:

我正在制作“一些东西”(我还不知道如何定义它),而要做的是创建一个 pptx 演示文稿和一些幻灯片......但我面临一些问题:我可以' t 更改我的幻灯片和文本框的背景颜色/图像...我无法弄清楚...任何人都可以帮助我吗?

【问题讨论】:

  • 我正在尝试回答您的问题,但遇到了一些问题。您是想通过 Office Interop 从 C# 更改幻灯片的背景颜色,还是想在 PowerPoint 中执行此操作?文本框在哪里?如何在 PowerPoint 幻灯片上显示文本框?
  • 来自 c#,我想构建一个“控制”powerpoint 的程序......就像一个 API......元素(形状)是根据用户请求创建的......不要担心在哪里他们...我有他们...我会知道他们在哪里...我有指针...TKS!
  • 没有任何指针。请向我们展示您的代码。
  • 这里是: public void CreateNewSlide(Presentation p, int index) { Slide newSlide = p.Slides.AddSlide(index, p.SlideMaster.CustomLayouts[0]); //改变newSlide的背景图片? //添加一个文本框 Shape newTextBox = newSlide.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizo​​ntal,0,0,150,75); //在newTextBox.TextFrame.TextRange.Text="Hello world!!!"中设置文本//设置背景颜色? }

标签: c# ms-office powerpoint


【解决方案1】:

关于在幻灯片上设置对象的颜色,您可能缺少的一点是 COM Interop 对颜色的看法与您在 .NET Framework 中可能习惯的略有不同。

在 .NET Framework 中,我们使用恰当命名的 Color structure 来表示颜色,它封装了颜色的 Alpha 通道及其红色、绿色和蓝色分量的值。但是,COM 互操作将颜色表示为 Integer 值,格式为 BGR。这意味着红色、绿色和蓝色的分量值实际上存储为蓝色、绿色和红色。

但是,.NET Framework 提供了一种简单的内置方法来在这两种颜色格式之间进行转换:ColorTranslator.ToOleColorTranslator.FromOle 方法。因此,您应该能够使用以下代码更改 PowerPoint 幻灯片的背景颜色:

//Create a color
Color myBackgroundColor = Color.LimeGreen;

//Translate to an OLE color
int oleColor = ColorTranslator.ToOle(myBackgroundColor);

//Set the background color of the slide
mySlide.Background.Fill.ForeColor.RGB = oleColor;

相反,要将当前背景颜色检索为 .NET 颜色,您必须执行相反的操作:

//Get the current background color of the slide
int oleColor = mySlide.Background.Fill.ForeColor.RGB;

//Translate to a .NET Color
color myBackgroundColor = ColorTranslator.FromOle(oleColor);

当然,如果您想设置形状的前景色(填充),您可以简单地设置其ForeColor 属性,如下所示:

//Create a color
Color myForegroundColor = Color.Aqua;

//Translate to an OLE color
int oleColor = ColorTranslator.ToOle(myForegroundColor );

//Set the foreground color of a shape
myShape.Fill.ForeColor.RGB = oleColor;

【讨论】:

  • 好吧,它确实适用于文本框和图片......但它不适用于幻灯片背景......无论如何!你很有帮助!!!
  • 对不起。我相信您也希望ForeColor 设置幻灯片背景。 BackColor 仅用于渐变、图案填充等。我已经更新了答案。
  • 是的......它不工作......它没有改变,但它没有返回异常或其他任何事情......
  • @Leonardo:如果您编辑原始问题并发布您尝试使用的代码,也许我可以更好地了解问题所在。
【解决方案2】:

在我发现您需要将 slide.FollowMasterBackground 设置为 false 之前,我遇到了同样的问题:

Slide slide = presentation.Slides.AddSlide(presentation.Slides.Count + 1, layout);
slide.FollowMasterBackground = Microsoft.Office.Core.MsoTriState.msoFalse;
slide.Background.Fill.ForeColor.RGB = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.DarkBlue);

【讨论】:

    【解决方案3】:

    我想通了...要更改幻灯片的背景,您必须先调用方法 Fill.Background() 才能更改颜色/图片!!!谢谢大家的帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2013-12-04
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多