0

我正在开发一个 PresentationML 解析器,并且我正在尝试实现对字体颜色主题的支持。我正在使用 SDK,我对这个怪物感到困惑:

Slide.SlidePart.SlideLayoutPart.SlideMasterPart.SlideMaster.SlideMasterPart.ThemePart.Theme.ThemeElements.ColorScheme

但是我仍然不清楚我去哪里获得颜色以进行没有以其他方式指定颜色的运行。对此的任何帮助将不胜感激。

TIA。

更新:刚刚涉水通过 xml 之后,看起来我在上面发布的怪物调用可能是正确的......它产生了一个具有“val”属性的元素,该属性与我正在寻找的十六进制代码相匹配。但目前尚不清楚我将如何解决颜色图中的特定方案(在本例中为“Light1”)。我认为,我已经完成了大约 75% 的路——如果有人可以帮助我了解哪种方案适用于跑步的逻辑,我认为这就是我所需要的。

4

1 回答 1

3

免费的电子书Open XML Explained可能会提供一些见解来帮助您理解。在 PresentationML 部分下,文档内容结构讨论了如何使用主题和主布局来提供默认值:

第 86 页 - 第 2 段:

DrawingML 主题可用于为字体、布局和其他品牌相关数据创建默认值,并允许将其与演示文稿的主体分开。主题可在所有 Open XML 标记语言中重复使用。在 PresentationML 包中,正在使用各种主题。默认情况下,每个单独的母版、幻灯片母版、笔记母版和讲义母版都引用一个单独的主题部分。演示文稿本身还引用了要在演示文稿中使用的默认主题。此默认主题通过引用包内的相同部分与幻灯片母版共享。

因此,在您的演示文稿 SlideMaster 的 theme1.xml 中,您将找到用于幻灯片母版和您的演示文稿的主题定义。颜色名称 Light1、Dark1 等映射到每个主题的主题元素的配色方案中的 12 种所需颜色。有关详细信息,请参阅架构

因此,在 Run 中,您会看到 Light1,它映射到主题中定义的数字。如果作者更改了主布局和/或主题,则 Light1 在运行中不会更改,但主题中的值可能会发生变化,这就是您从中获取新值的地方。

在第 121 页,Open XML Explained 中提到了 12 种颜色:

在主题元素中,您需要创建一个包含所有主题数据的主题元素节点。在此级别,您还可以应用额外信息或覆盖主题元素内的现有信息。主题元素是使用一组子节点构建的,每个节点标识一个特定的数据项,例如字体或颜色。clrScheme 元素定义了一个颜色列表。主题颜色列表仅限于“accent1”或“visited link”等项目。这些主题颜色中的每一个都使用一个单独的 XML 元素,其中节点名称标识主题颜色. 在这个元素中,您可以使用前面讨论过的使用 DrawingML 为形状着色的着色机制。在标记样本 157 中定义了两种主题颜色,“dark-1”和“accent-1”颜色。标记示例不完整。您需要为所有十二种主题颜色定义值。

希望这可以帮助...

于 2012-04-21T21:54:24.173 回答