dotnet OpenXML 如何获取 schemeClr 颜色

本文详细介绍了如何在 dotnet 开发中处理 OpenXML 的 Scheme Color,特别是如何获取 schemeClr 颜色并转换为 RGB。讨论了在 Slide、Slide Layout 和 Slide Master 中的颜色查找逻辑,并提供了相应的代码示例。
摘要由CSDN通过智能技术生成

颜色是一个大的主题,在 ECMA 376 里面用了 19 页 A4 描述了颜色,但仅是简单的描述。在 OpenXML 定义了 Scheme Color (schemeClr) 是用来表示主题的颜色,可以跟随主题的更改而更改颜色。例如我的文本设置为主题的文本颜色,那么在我更改文档主题的文本色就可以更改我的文本颜色

在 OpenXML 的颜色里面,其中 Scheme Color (a:schemeClr) 是十分强大的,可以用来作为模版发布,让用户自己一键替换主题色。也提供了给智能排版协助更换主题色的方法

在填充笔刷里,本文说的颜色是放在 SolidColorBrush 里面,也就是在 OpenXML 的 a:solidFill 里面的颜色,大概的文档代码请看下面

<a:solidFill>
	<a:schemeClr val="tx1">
		<a:lumMod val="65000" />
		<a:lumOff val="35000" />
	</a:schemeClr>
</a:solidFill>

上面代码的 a:solidFill 使用 a:schemeClr 填充,使用的值是 val="tx1" 而在 a:schemeClr 的 lumMod 和 lumOff 表示颜色转换,更多颜色转换请看 dotnet OpenXML 颜色变换

那么 val="tx1" 表示的颜色是什么?是否可以转 RGB 表示,其实这个值表示的是主题里面的 tx1 也就是 Text1 属性的颜色,需要再次去主题里面找到对应的颜色

假定如上是放在 Slide 页面里面的某个文本的颜色,代码如下

<p:sp>
  <p:nvSpPr>
    <p:cNvPr id="2" name="标题 1" />
    <p:cNvSpPr>
      <a:spLocks noGrp="1" />
    </p:cNvSpPr>
    <p:nvPr>
      <p:ph type="ctrTitle" />
    </p:nvPr>
  </p:nvSpPr>
  <p:spPr>
    <a:xfrm>
      <a:off x="568575" y="84959" />
      <a:ext cx="9144000" cy="635000" />
    </a:xfrm>
  </p:spPr>
  <p:txBody>
    <a:bodyPr />
    <a:lstStyle />
    <a:p>
      <a:r>
        <a:rPr kumimoji="1" lang="zh-CN" altLang="en-US" b="1" dirty="0">
          <a:solidFill>
            <a:schemeClr val="tx1">
              <a:lumMod val="65000" />
              <a:lumOff val="35000" />
            </a:schemeClr>
          </a:solidFill>
          <a:ea typeface="微软雅黑" panose="020B0503020204020204" charset="-122" />
        </a:rPr>
        <a:t>林德熙</a:t>
      </a:r>
    </a:p>
  </p:txBody>
</p:sp>

此时想要拿到这个文本的字体的颜色,就需要先获取 Color Map 颜色表,然后找到 Color Scheme 读取实际颜色。默认的 Color Map 在 Slide Master 里面,关于 Slide Master 请看dotnet OpenXML 的 Slide Master 和 Slide Layout 是什么

但是此时在页面里面依

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值