【问题标题】:What's the difference between lumMod/lumOff and tint/shade in DrawingML colors?DrawingML 颜色中的 lumMod/lumOff 和 tint/shade 有什么区别?
【发布时间】:2020-07-03 18:44:28
【问题描述】:

使用<a:lumMod> 和<a:lumOff> 标签在DrawingML 中设置阴影或色调(例如,分别暗25%,亮40%)与使用<a:shade> 和执行似乎产生类似结果的操作有什么区别? <a:tint>标签?

在 PowerPoint 中,从调色板选择器中选择“Accent 1, 40% Lighter”会生成如下所示的 XML:

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

像这样使用 API 方法 Brightness 生成相同的 XML:

TextRange.Font.Color.Brightness = 0.4

像这样使用 API 方法 TintAndShade:

TextRange.Font.Color.TintAndShade = 0.4

产生这个 XML:

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

并产生稍浅的颜色。

我应该如何理解正在发生的事情?为什么有两种方法如此相似,为什么它们的行为不同?

【问题讨论】:

    标签: vba powerpoint openxml drawingml


    【解决方案1】:

    当颜色是原始主题颜色的阴影时,lumMod 属性是此处显示的唯一标签之一。当颜色为原色时,标签出现在标签之后。

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

    这意味着您可以通过 val 重音 1 从 ColorTheme 获取颜色(假设为 RGb(91, 155, 213))。 然后你必须改变这种颜色的亮度。您可以将其转换为 HSL(208.5°, 59.2, 59.6) 并修改亮度 = (luminance/100)*(lumMod/100_000) + (lumOff/100_000) 获取新的 HSL 颜色 (HSL(208.5°, 59.2, 75.7) -> RGB(156, 195, 230)

    对于阴影,公式是亮度 * %tint。 对于色调,公式为亮度 * %tint + (1-%tint)。 (注意 1-%tint 等于 DrawingML 中的 lumOff 值。)

    查看this 文章。

    【讨论】:

    • Sorry Maxim,您可能想再次阅读该问题,此回复实际上并未解决问题,即:“为什么 API 和 XML 模式有两种不同的方式来指定 tints/阴影以及为什么它们会产生不同的渲染?”。
    • @scanny 用他提供的所有信息对他投反对票有点不公平。如果您想回答您在评论中提出的确切问题,您应该这样问。所以这就是答案——因为 COM API 和 XML 模式是两个不同的东西。就是这样。
    猜你喜欢
    • 1970-01-01
    • 2020-06-20
    • 2013-04-23
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2023-01-07
    相关资源
    最近更新 更多