PowerPoint VBA - 主题颜色公​​式

PowerPoint VBA - Theme Color Formula

我想模仿 PowerPoint 如何在使用 6 种强调色后自动选择颜色。

在vba中你可以这样设置6种主题颜色:

.ThemeColorScheme(msoThemeAccent1) = RGB(255, 0, 0)
.ThemeColorScheme(msoThemeAccent2) = RGB(0, 255, 0)
.ThemeColorScheme(msoThemeAccent3) = RGB(0, 255, 255)
.ThemeColorScheme(msoThemeAccent4) = RGB(255, 255, 0)
.ThemeColorScheme(msoThemeAccent5) = RGB(23, 255, 10)
.ThemeColorScheme(msoThemeAccent6) = RGB(23, 255, 100)

此处手动设置主题颜色:

假设我与 15 个系列聊天,powerpoint 将使用前 6 种帐户颜色,但随后它会根据前 6 种强调色自动选择稍亮或稍暗的 rgbs。我想要这个公式,所以我可以根据自己的喜好调整它。这个论坛在任何地方都可用吗?

颜色变换算法从未发表过,但它们很容易推导出来:

  1. 创建包含所需数据系列的示例图表。
  2. 保存文件,将结尾改为.zip并解压。
  3. 看看ppt/charts/chart1.xml

Office 程序不会直接转换 RGB 值。相反,他们应用过滤器。这是前 6 个系列的典型颜色填充:

<a:solidFill>
    <a:schemeClr val="accent1"/>
</a:solidFill>

第二组 6 人:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="60000"/>
    </a:schemeClr>
</a:solidFill>

第三组:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="80000"/>
        <a:lumOff val="20000"/>
    </a:schemeClr>
</a:solidFill>

第四组:

    <a:schemeClr val="accent1">
        <a:lumMod val="80000"/>
    </a:schemeClr>
</a:solidFill>

第五组:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="60000"/>
        <a:lumOff val="40000"/>
    </a:schemeClr>
</a:solidFill>

第六组:

<a:solidFill>
    <a:schemeClr val="accent1">
        <a:lumMod val="50000"/>
    </a:schemeClr>
</a:solidFill>

遗憾的是,VBA 中没有直接应用 lumMod 或 lumOff 的方法。相反,您需要应用 .PictureEffects 参数,然后找出哪个 PictureEffect 代码创建了必要的视觉效果。 msoEffectBrightnessContrastmsoEffectSaturation 将能够通过一些实验设置相同的颜色值。下面是微软列举的图片效果:MsoPictureEffectType enumeration (Office)