C# PowerPoint主题配色方案衍生颜色/色调

C# PowerPoint主题配色方案衍生颜色/色调,c#,powerpoint,vsto,C#,Powerpoint,Vsto,在VSTO/PowerPoint处理颜色的方式上,我正在寻找一种从配色方案中获取颜色的方法(参见图,红色框中有趣的部分) 我尝试了TintAndShade和RGB空间中的各种其他转换,但我似乎无法重现PowerPoint生成这些颜色的过程。有没有人成功地获得了这些颜色(当然是编程方式,并且独立于实际使用的配色方案) 任何帮助都将不胜感激! 提前感谢,, eDudePowerPoint对象模型没有为此提供任何内容 您可以尝试使用属性来获取表示Microsoft Office主题颜色方案的对象。该

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

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

任何帮助都将不胜感激! 提前感谢,,
eDude

PowerPoint对象模型没有为此提供任何内容

您可以尝试使用属性来获取表示Microsoft Office主题颜色方案的对象。该方法允许在Microsoft Office主题的配色方案中获取颜色。

我在中找到了答案

本质上,变换应用于HSL空间(色调/饱和度/亮度)。从RGB到HSL的转换实现起来有些繁琐,但却是一个简单的数学运算

一旦主体
颜色方案
颜色从RGB转换为HSL,以下转换将从主颜色转换为不同的色调:

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

其中,
分数
是工具提示中给出的百分比值。从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调色板。

这些颜色是由PowerPoint中的一组内置算法创建的。它们不可编辑或配置。或者,您可以创建一组自定义颜色,这些颜色将显示在自动生成的调色板下面: