PowerPoint ThemeColorScheme 派生 colors/shades

PowerPoint ThemeColorScheme derived colors/shades

正在研究 VSTO/PowerPoint 处理颜色的方式,我正在寻找一种从配色方案中获取颜色的方法(见图,有趣的部分用红色框起来)。

我尝试了 TintAndShade 和 RGB 中的各种其他转换 space,但我似乎无法重现 PowerPoint 为生成这些颜色所做的工作。有没有人成功获得这些颜色(当然,以编程方式,并且独立于实际使用的配色方案)?

非常感谢任何帮助! 提前致谢, eDude

PowerPoint 对象模型没有为此提供任何东西。

您可以尝试使用 OfficeTheme.ThemeColorScheme property which gets a ThemeColorScheme object that represents the color scheme of a Microsoft Office theme. The ThemeColorScheme.Colors 方法获取 Microsoft Office 主题配色方案中的颜色。

我在 this article 中找到了答案。

本质上,转换应用于 HSL space (Hue/Saturation/Lightness)。从 RGB 到 HSL 的转换实现起来有些乏味,但却是一个简单的数学运算。

主要 ThemeColorScheme 颜色从 RGB 转换为 HSL 后,以下转换将从主要颜色变为不同的阴影:

L = L*Abs(fraction) + (fraction > 0 ? 1 : 0) * (1-fraction)

其中 fraction 是工具提示中给出的百分比值。从 HSL 转换回 RGB,您将获得图片中的颜色。

根据我的实验,用于构建 PowerPoint 的分数取决于主色的 L 值。我对限制的最佳猜测是:

  • 对于 L < 0.8 的颜色,分数为 0.2、0.4、0.6、-0.75 和 -0.5
  • 对于 L >= 0.8 但不是 1.0 的颜色,分数为 -0.9、-0.75、-0.5、-0.25 和 -0.1
  • 对于白色,分数为 -0.95、-0.85、-0.75、-0.65 和 -0.5

有了它,我可以通过编程方式构建整个 PowerPoint 调色板。