首页 > 其他分享 >PPT主题颜色ColorFormat、ColorScheme、ColorEffect 对象在PPT中的使用

PPT主题颜色ColorFormat、ColorScheme、ColorEffect 对象在PPT中的使用

时间:2023-08-30 09:44:51浏览次数:38  
标签:方案 颜色 Office ColorScheme ColorEffect RGB PPT PowerPoint 幻灯片

一、ColorFormat 对象

代表单色对象的颜色、带有过渡或图案填充的对象的前景或背景色,或者指针的颜色。可以将颜色设为显式的红-绿-蓝值(使用 RGB 属性)或设为配色方案中的一种颜色(使用 SchemeColor 属性)。

使用下表中列出的属性之一返回 ColorFormat 对象。

使用此属性

对此对象 如果要返回一个 ColorFormat 对象,该对象代表

DimColor AnimationSettings 变暗对象使用的颜色
BackColor FillFormat 背景填充色(用于底纹或图案填充)
ForeColor FillFormat 前景填充色(或填充色仅为单色)
Color Font 项目符号或字符颜色
BackColor LineFormat 背景线颜色(使用带图案的线)
ForeColor LineFormat 前景线颜色(或线条颜色仅为实线)
ForeColor ShadowFormat 阴影颜色
PointerColor SlideShowSettings 演示文稿的默认指针颜色
PointerColor SlideShowView 幻灯片放映视图中的临时指针颜色
ExtrusionColor ThreeDFormat 凸出对象的侧面颜色

可以使用 SchemeColor 属性将幻灯片元素的颜色设置为标准配色方案中的颜色。以下示例将当前演示文稿第二张幻灯片第一个形状的文本颜色设为标准配色方案的标题颜色。

ActivePresentation.Slides(2).Shapes(1).TextFrame _
.TextRange.Font.Color.SchemeColor = ppTitle

使用 RGB 属性将颜色设置为显示的红-绿-蓝值。以下示例向 myDocument 中添加一个矩形,然后设置矩形填充的前景色、背景色和过渡。

Set myDocument = ActivePresentation.Slides(1)
With myDocument.Shapes.AddShape(msoShapeRectangle, 90, 90, 90, 50).Fill
    .ForeColor.RGB = RGB(128, 0, 0)
    .BackColor.RGB = RGB(170, 170, 170)
    .TwoColorGradient msoGradientHorizontal, 1
End With

C#代码

using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;

public class ShapeColorChanger
{
    public void ChangeShapeColor()
    {
        PowerPoint.Presentation presentation = Globals.ThisAddIn.Application.ActivePresentation;

        // 将第二张幻灯片上第一个形状的文本框字体颜色设置为 ppTitle
        PowerPoint.Shape shape = presentation.Slides[2].Shapes[1];
        PowerPoint.TextFrame textFrame = shape.TextFrame;
        PowerPoint.TextRange textRange = textFrame.TextRange;
        textRange.Font.Color.SchemeColor = Office.MsoColorSchemeIndex.msoThemeColorText1;

        // 在第一张幻灯片上添加一个矩形形状,并设置填充颜色和渐变效果
        PowerPoint.Slide slide = presentation.Slides[1];
        PowerPoint.Shape rectangle = slide.Shapes.AddShape(Office.MsoAutoShapeType.msoShapeRectangle, 90, 90, 90, 50);
        PowerPoint.FillFormat fill = rectangle.Fill;
        fill.ForeColor.RGB = RGB(128, 0, 0);
        fill.BackColor.RGB = RGB(170, 170, 170);
        fill.TwoColorGradient(Office.MsoGradientStyle.msoGradientHorizontal, 1);
    }

    private int RGB(int Red, int Green, int Blue)
    {
        return Red + (Green << 8) + (Blue << 16);
    }
}

注释:

  1. 引入 Microsoft.Office.Interop.PowerPoint 和 Microsoft.Office.Core 命名空间。
  2. 创建一个名为 ShapeColorChanger 的类,用于修改幻灯片形状的颜色。
  3. 在 ChangeShapeColor 方法中,获取当前活动演示文稿。
  4. 使用 Slides 和 Shapes 属性获取第二张幻灯片上的第一个形状。
  5. 获取该形状的文本框、文本范围和字体,并将字体颜色设置为 ppTitle。
  6. 使用 Slides 属性获取第一张幻灯片。
  7. 使用 Shapes.AddShape 方法在该幻灯片上添加一个矩形形状。
  8. 获取形状的填充颜色,并设置前景色和背景色。
  9. 使用 TwoColorGradient 方法设置渐变效果,水平方向,颜色变化逐渐从前景色到背景色。

二、ColorScheme对象

代表一种配色方案。该配色方案是八种颜色的组合,分别用于幻灯片、备注页或讲义中不同的元素,例如标题或背景(请注意,演示文稿中幻灯片、备注页或讲义的配色方案可以单独设置)。每种颜色由一个 RGBColor 对象代表。ColorScheme 对象是 ColorSchemes 集合的成员。ColorSchemes 集合包含演示文稿中所有的配色方案。

使用 ColorScheme 对象

本节描述如何进行下列操作:

从演示文稿的所有配色方案的集合中返回 ColorScheme 对象。 返回附加到指定幻灯片或母版的 ColorScheme 对象。 从 ColorScheme 对象返回单个幻灯片元素的颜色。
从演示文稿的所有配色方案的集合中返回 ColorScheme 对象使用 ColorSchemes(index) 返回单个 ColorScheme 对象,其中 index 是幻灯片配色方案索引号。以下示例删除当前演示文稿第二个配色方案。

 ActivePresentation.ColorSchemes(2).Delete

返回附加到指定幻灯片或母版的 ColorScheme 对象

设置 Slide、SlideRange 或 Master 对象的 ColorScheme 属性可分别返回一张幻灯片、一组幻灯片、或一个幻灯片母版的配色方案。以下示例创建一个基于当前幻灯片的配色方案,将新配色方案添加到演示文稿的标准配色方案集合中,并将幻灯片母版的配色方案设为新的配色方案。所有基于该母版的幻灯片将具有该配色方案。

Set newScheme = ActiveWindow.View.Slide.ColorScheme
newScheme.Colors(ppTitle).RGB = RGB(0, 150, 250)
Set newStandardScheme = _
 ActivePresentation.ColorSchemes.Add(newScheme)
ActivePresentation.SlideMaster.ColorScheme = newStandardScheme

从 ColorScheme 对象返回单个幻灯片元素的颜色

使用 Colors 方法返回 RGBColor 对象,该对象代表一个幻灯片元素类型的颜色。可以将一个 RGBColor 对象设置为另一个 RGBColor 对象,或使用 RGB 属性设置或返回 RGBColor 对象的显式的红-绿-蓝(RGB)值。以下示例将第一个配色方案的背景色设为红色,并将标题颜色设为第二个配色方案中定义的标题颜色。

With ActivePresentation.ColorSchemes
  .Item(1).Colors(ppBackground).RGB = RGB(255, 0, 0)
  .Item(1).Colors(ppTitle) = .Item(2).Colors(ppTitle)
End With

C#代码

 

using PowerPoint = Microsoft.Office.Interop.PowerPoint;

public class ColorSchemeChanger
{
    public void ChangeColorScheme()
    {
        PowerPoint.Presentation presentation = Globals.ThisAddIn.Application.ActivePresentation;

        // 删除第二个颜色方案
        presentation.ColorSchemes[2].Delete();

        // 获取当前窗口视图的幻灯片颜色方案
        PowerPoint.ColorScheme newScheme = Globals.ThisAddIn.Application.ActiveWindow.View.Slide.ColorScheme;

        // 设置标题颜色为 RGB(0, 150, 250)
        newScheme.Colors[(PowerPoint.PpColorSchemeIndex.ppTitle)].RGB = RGB(0, 150, 250);

        // 将新的颜色方案添加为标准方案
        PowerPoint.ColorScheme newStandardScheme = presentation.ColorSchemes.Add(newScheme);

        // 设置幻灯片母版的颜色方案为新的标准方案
        presentation.SlideMaster.ColorScheme = newStandardScheme;

        // 修改第一个颜色方案的背景颜色和标题颜色
        PowerPoint.ColorScheme colorSchemes = presentation.ColorSchemes;
        colorSchemes.Item(1).Colors[(PowerPoint.PpColorSchemeIndex.ppBackground)].RGB = RGB(255, 0, 0);
        colorSchemes.Item(1).Colors[(PowerPoint.PpColorSchemeIndex.ppTitle)] = colorSchemes.Item(2).Colors[(PowerPoint.PpColorSchemeIndex.ppTitle)];
    }

    private int RGB(int Red, int Green, int Blue)
    {
        return Red + (Green << 8) + (Blue << 16);
    }
}

注释:

  1. 引入 Microsoft.Office.Interop.PowerPoint 命名空间,用于访问 PowerPoint 相关的类和接口。
  2. 创建一个名为 ColorSchemeChanger 的类,用于修改幻灯片的颜色方案。
  3. 在 ChangeColorScheme 方法中,获取当前活动演示文稿。
  4. 使用 ColorSchemes.Delete 方法删除第二个颜色方案。
  5. 获取当前窗口视图幻灯片的颜色方案,并将标题颜色设置为 RGB(0, 150, 250)。
  6. 使用 ColorSchemes.Add 方法将新的颜色方案添加为标准方案。
  7. 将幻灯片母版的颜色方案设置为新的标准方案。
  8. 使用 ColorSchemes.Item 方法获取第一个颜色方案,并分别设置背景颜色和标题颜色。

三、ColorEffect 对象

ColorEffect 对象:代表动画动作的一种颜色效果。

如何使用ColorEffect对象

使用 AnimationBehavior 对象的 ColorEffect 属性返回 ColorEffect 对象。颜色效果可以使用 ColorEffect 对象的 From 和 To 属性更改,如下所示。颜色效果最初使用 To 属性设置,然后可以使用 By 属性按指定的编号进行更改。以下示例向当前演示文稿的第一张幻灯片中添加一个形状,并且将颜色效果动画动作设置为更改新形状的填充颜色。

Sub YouChangeColorEffect()

Dim sldFirst As Slide

Dim shpHeart As Shape
Dim effNew As Effect

Dim bhvEffect As AnimationBehavior

Set sldFirst = ActivePresentation.Slides(1)

Set shpHeart = sldFirst.Shapes.AddShape(Type:=msoShapeHeart, Left:=100, Top:=100, Width:=100, Height:=100)
Set effNew = sldFirst.TimeLine.MainSequence.AddEffect(Shape:=shpHeart,EffectID:=msoAnimEffectChangeFillColor, Trigger:=msoAnimTriggerAfterPrevious)

Set bhvEffect = effNew.Behaviors.Add(Type:=msoAnimTypeColor)

With bhvEffect.ColorEffect

.From.RGB = RGB(Red:=255, Green:=0, Blue:=0)
.To.RGB = RGB(Red:=0, Green:=0, Blue:=255)

End With

End Sub

C#代码

using PowerPoint = Microsoft.Office.Interop.PowerPoint;

public class ColorEffectChanger
{
    public void ChangeColorEffect()
    {
        PowerPoint.Slide slideFirst = Globals.ThisAddIn.Application.ActivePresentation.Slides[1];

        PowerPoint.Shape shapeHeart = slideFirst.Shapes.AddShape(
            Type: Microsoft.Office.Core.MsoAutoShapeType.msoShapeHeart,
            Left: 100, Top: 100, Width: 100, Height: 100
        );

        PowerPoint.Effect effectNew = slideFirst.TimeLine.MainSequence.AddEffect(
            Shape: shapeHeart,
            EffectId: PowerPoint.PpEffectID.ppEffectChangeFillColor,
            Trigger: PowerPoint.MsoAnimTriggerType.msoAnimTriggerAfterPrevious
        );

        PowerPoint.AnimationBehavior behaviorEffect = effectNew.Behaviors.Add(
            Type: PowerPoint.MsoAnimType.msoAnimTypeColor
        );

        PowerPoint.ColorFormat colorEffect = behaviorEffect.ColorEffect;
        colorEffect.From.RGB = RGB(Red: 255, Green: 0, Blue: 0);
        colorEffect.To.RGB = RGB(Red: 0, Green: 0, Blue: 255);
    }

    private int RGB(int Red, int Green, int Blue)
    {
        return Red + (Green << 8) + (Blue << 16);
    }
}

注释:

  1. 引入 Microsoft.Office.Interop.PowerPoint 命名空间,用于访问 PowerPoint 相关的类和接口。
  2. 创建一个名为 ColorEffectChanger 的类,用于修改颜色效果。
  3. 在 ChangeColorEffect 方法中,获取当前活动演示文稿的第一张幻灯片。
  4. 使用 Shapes.AddShape 方法添加一个心形形状,并设置位置和大小参数。
  5. 使用 TimeLine.MainSequence.AddEffect 方法在幻灯片的主时间轴中添加一个变色效果,并设置触发方式为紧接上一个动画。
  6. 使用 Behaviors.Add 方法添加一个颜色动画行为。
  7. 获取颜色动画行为的 ColorEffect 属性,并分别设置起始颜色和结束颜色的 RGB 值。
  8. 添加了一个辅助方法 RGB,用于将 RGB 分量组合成整数值。

 

PowerPoint) (PpColorSchemeIndex 列舉)

 指定與指定物件相關之已套用色彩配置中的色彩。

MSDN地址:https://learn.microsoft.com/zh-hk/office/vba/api/powerpoint.ppcolorschemeindex

名稱 描述
ppAccent1 6 輔色1
ppAccent2 7 Accent2
ppAccent3 8 輔色3
ppBackground 1 背景
ppFill 5 填滿
ppForeground 2 前景
ppNotSchemeColor 0 非色彩配置
ppSchemeColorMixed -2 混合色彩配置
ppShadow 3 陰影
ppTitle 4 標題

Office ThemeColorScheme 成員

MSDN地址:https://learn.microsoft.com/zh-tw/office/vba/api/overview/library-reference/themecolorscheme-members-office

名稱 描述
Colors 會取得一個物件,代表 Microsoft Office 佈景主題之色彩配置中的色彩。
GetCustomColor 會取得一個值,代表 Microsoft Office 佈景主題之色彩配置中的色彩。
負載 會從檔案載入 Microsoft Office 佈景主題的色彩配置。
Save 會將 Microsoft Office 佈景主題的色彩配置儲存至檔案。

GetCustomColor 會取得一個值,代表 Microsoft Office 佈景主題之色彩配置中的色彩。

Dim tTheme As OfficeTheme 
Dim tcsThemeColorScheme As ThemeColorScheme 
Dim csCustomColor As MsoThemeColorSchemeIndex 
Set tcsThemeColorScheme = tTheme.ThemeColorScheme 
csCustomColor = tcsThemeColorScheme.GetCustomColor("CheerfulColor") 

Office 365 主题和颜色的 VBA 代码

我在 MSDN 上和网上偶尔发现了 msoThemeColor 和 msoThemeColorIndex 参考资料

VBA(Visual Basic for Applications)语言编写的,用于操作 PowerPoint 的主题和颜色方案。

首先,代码声明了一些变量:

vbCopy Code
Dim x As OfficeTheme
Dim mycolor As ThemeColor
Dim mythemecolorscheme As ThemeColorScheme
Dim mycolorindex As MsoThemeColorIndex
Dim mythemecolorschemeindex As MsoThemeColorSchemeIndex

接下来,代码执行了以下操作:

setname = mythemecolorscheme.Colors(msoThemeAccent2):这行代码将变量 setname 设置为 mythemecolorscheme 对象的 Colors 集合中的 msoThemeAccent2 主题颜色。
foobar = mythemecolorscheme.Count:这行代码将变量 foobar 设置为 mythemecolorscheme 对象的颜色计数。
x = OfficeTheme.ThemeColorSchemeIndex(1):这行代码将变量 x 设置为 OfficeTheme 对象的第一个主题颜色方案。
x.ThemeColorScheme.Colors.RGB = RGB(255, 0, 0):这行代码将 x 对象的主题颜色方案的颜色设置为红色(RGB 值为 255, 0, 0)。
x.ThemeColorScheme.Count:这行代码获取 x 对象的主题颜色方案的颜色计数。
x.ThemeColorScheme.Save (myfilename):这行代码将 x 对象的主题颜色方案保存到指定的文件名 myfilename 中。
x.ThemeColorScheme.Load (myfilename):这行代码从指定的文件名 myfilename 中加载主题颜色方案到 x 对象中。

C#代码

using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;

public class PPTPlugin
{
    public void ModifyThemeColors(string filename)
    {
        Application pptApp = new Application();
        Presentation pptPresentation = pptApp.Presentations.Open(filename, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoTrue);

        try
        {
            ThemeColorScheme themeColorScheme = pptPresentation.SlideMaster.Theme.ThemeColorScheme;

            // 获取指定颜色并设置变量
            ColorFormat setColor = themeColorScheme.Colors[(MsoThemeColorIndex)msoThemeAccent2];
            string setName = setColor.RGB.ToString();
            
            // 获取颜色计数
            int colorCount = themeColorScheme.Count;

            // 修改主题颜色方案
            OfficeTheme officeTheme = pptPresentation.SlideMaster.Theme;
            officeTheme.ThemeColorSchemeIndex = 1; // 选择第一个主题颜色方案

            // 设置特定颜色为红色
            ColorFormat newColor = officeTheme.ThemeColorScheme.Colors[(MsoThemeColorSchemeIndex)MsoThemeColorSchemeIndex.msoThemeColorAccent2];
            newColor.RGB = RGB(255, 0, 0);

            // 获取颜色计数
            int newColorCount = officeTheme.ThemeColorScheme.Count;

            // 保存修改后的主题颜色方案
            officeTheme.ThemeColorScheme.Save("modified_theme_color.xml");

            // 加载保存的主题颜色方案
            officeTheme.ThemeColorScheme.Load("modified_theme_color.xml");
        }
        finally
        {
            // 关闭 PowerPoint 应用程序并释放资源
            pptPresentation.Close();
            pptApp.Quit();

            ReleaseCOMObject(pptPresentation);
            ReleaseCOMObject(pptApp);
        }
    }

    private void ReleaseCOMObject(object obj)
    {
        if (obj != null)
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
    }
}

注释:

  1. 引入命名空间 Microsoft.Office.Core 和 Microsoft.Office.Interop.PowerPoint,用于访问 PowerPoint 相关的类和接口。
  2. 创建一个名为 PPTPlugin 的类,用于插件开发。
  3. 在 ModifyThemeColors 方法中,打开 PowerPoint 文件并获取一个 Presentation 对象来操作幻灯片。
  4. 使用 ThemeColorScheme 属性获取主题颜色方案,并设置变量和获取颜色计数。
  5. 使用 SlideMaster.Theme 属性获取幻灯片母版的主题对象,并设置选择的主题颜色方案。
  6. 使用 ThemeColorScheme.Colors 属性获取指定的颜色对象,并将其 RGB 值设置为红色。
  7. 获取修改后的主题颜色方案的颜色计数,并将其保存到 XML 文件中。
  8. 加载保存的主题颜色方案。
  9. 最后,在 finally 块中关闭 PowerPoint 应用程序,释放相关的 COM 对象资源。
  10. 添加了一个辅助方法 ReleaseCOMObject 用于释放 COM 对象资源。

标签:方案,颜色,Office,ColorScheme,ColorEffect,RGB,PPT,PowerPoint,幻灯片
From: https://www.cnblogs.com/guangzhiruijie/p/17666439.html

相关文章

  • 活动回顾丨云原生技术实践营长沙站(含 PPT)
    8月25日,“阿里云云原生技术实践营”在长沙圆满落幕。活动现场,阿里云一线工程师、湖南兴盛优选云原生技术负责人与现场近百位关注云原生的开发者、企业决策者一起体验了云原生的产品和技术能力及高效稳定的企业级云原生上云方案,同时交流了Serverless、容器、微服务、消息队列、......
  • centos7下安装libreoffice供word和ppt转pdf预览使用
    一、卸载系统当前的libreoffice并安装新的,执行如下命令:yumremovelibreoffice-*在命令行执行libreoffice--version,检查是否已经安装LibreOffice。1、在centos7下安装LibreOffice,可直接使用yum安装即可,在命令行输入以下命令:yuminstalllibreofficeyuminstalllibreoffice-he......
  • 分享一个批量转换某个目录下的所有ppt->pdf的Python代码
    大家好,我是皮皮。一、前言前几天在Python最强王者群【Python小小小白】分享了一份Python自动化办公的代码,可以批量转换某个目录下的所有ppt->pdf,非常强大。二、实现过程在正式跑代码之后,你可能需要按照对应的库,不然会报错。代码运行之后,本地会出现下面的UI界面,选择PPT文件......
  • PPT投影时常用快捷键
    播放F5:从第一页开始投映播放。Shift+F5:从当前页开始投映播放。翻页N、Enter、PageDown、空格键:执行下一个动画或换页到下一张幻灯片。P、PageUp、Backspace:执行上一个动画或返回到上一个幻灯片。  屏幕显示B:黑屏或从黑屏返回幻灯片放映。W:白屏或从白屏返回幻灯片放映......
  • PPT一键导入秒变视频?你没听错!有了这个神器,让你的PPT从基础到高级,转化为视频就像变魔术
    我们都知道PPT是一个绝对实用的工具,可以帮助我们展示演讲、产品介绍、项目计划等等。但是有时候,我们想把PPT变成视频的形式,这样更容易传播和分享啦!   那么你会制作PPT吗?你在使用中有遇到过一些困难吗?让我给你看看我身边几位朋友对PPT的感受吧! 企业朋友A说:......
  • ppt 修改左下角母版背景文字
    ppt一般都有自己的母版,母版中设置了一些格式如下,左下角 修改方式  ......
  • Java 中锁定和解锁PPT内容形状
    本文为您提供了在Java中锁定PowerPointPPT形状的综合指南。因此,您可以保护PowerPoint演示文稿的内容。出于多种原因,锁定形状可能很有用,包括防止意外更改、保护品牌标识、保持布局完整性等。那么,让我们继续看看如何在Java演示文稿中锁定或解锁形状。  Aspose.Slides 是......
  • PPT| ERP管理咨询及IT规划方案 P93
    PPT共93页,由于篇幅有限,以下为部分资料.......
  • 创意无限,Gamma引领PPT设计新时代
    在现代商务沟通中,演示文稿是传递信息和展示创意的重要手段之一。为了满足这一需求,Gamma应运而生,作为一款高效、精美、协同的PPT工具。它不仅能够设计出优雅精致的幻灯片,还支持模块化编辑和高效协同,是您的一键生成专业PPT的得力助手。本文将深入介绍Gamma的作用及其在PPT设计领域的......
  • PPT| XX大型制造业产品主数据蓝图方案 P112
    PPT共112页,由于篇幅有限,以下为部分资料.......