颜色变换是对基础颜色的相关属性的修改。 例如,透明度是与颜色相关的属性。 颜色转换被指定为任何颜色模型标签的子标签,可以在任何颜色加上颜色变换

大概的写法如下

<a:solidFill>
   <a:srgbClr val="00B050">
        <a:alpha val="51000"/>
   </a:srgbClr>
</a:solidFill> 

上面代码表示一个 使用 Solid Color Brush 的填充(a:solidFill) 颜色是 RGB 颜色,基础值是 #00B050 在此基础上加上 alpha 通道,值是 EMU 单位的

a:alpha 就是颜色变换的内容,除了 a:alpha 之后,还有很多其他的颜色变换

  • tint:产生较浅版本的输入颜色。 如 10%的色彩是输入颜色的10%,再加上90%的白色。
  • shade:产生其输入颜色的较暗版本。如 10%的阴影是输入颜色的10%加上90%的黑色。
  • comp:产生其输入颜色的补码。例如,红色的补码是绿色。
  • inv:产生其输入颜色的倒数。例如,红色(1,0,0)的倒数是青色(0,1,1)。
  • gray:考虑到红色,绿色和蓝色原色的相对强度,产生其输入颜色的灰度。
  • alpha:产生具有指定不透明度的输入颜色,但其颜色不变。
  • alphaOff:产生其输入颜色或多或少不透明的版本。 Alpha偏移量永远不会使Alpha值超过100%或降低至0%以下;也就是说,转换结果会将alpha固定为[0%,100%]的范围。 如 10%的alpha偏移将50%的不透明度增加到60%。如 -10%的alpha偏移将50%的不透明度降低到40%。
  • alphaMod:产生其输入颜色或多或少的不透明版本。 alpha调制永远不会将alpha增加到100%以上。如 200%的alpha调制使输入颜色的透明度是以前的两倍。 50%的alpha调制使输入颜色的透明度是以前的一半。
  • hue:产生具有指定色相但饱和度和亮度不变的输入颜色。
  • hueOff:改变其色调但不改变其饱和度和亮度,以产生输入颜色。
  • hueMod:产生输入色,其色相由给定百分比调制。
  • sat:以指定的饱和度产生输入颜色,但其色相和亮度不变。通常,饱和度值在[0%,100%]范围内。
  • satOff:产生具有饱和度偏移但色相和亮度不变的输入颜色。
  • satMod:产生输入颜色,其饱和度由给定的百分比调制。 如 50%饱和度调制可将饱和度降低一半。如 200%的饱和度调制会使饱和度加倍。
  • lum:以指定的亮度产生输入颜色,但其色相和饱和度不变。通常,亮度值在[0%,100%]范围内。
  • lumOff:产生输入颜色,其亮度发生变化,但其色相和饱和度不变。
  • lumMod:产生输入颜色,其亮度由给定百分比调制。如 50%的亮度调制将亮度降低一半。如 200%的亮度调制使亮度加倍。单位是千倍百分比
  • red:使用指定的红色分量产生输入颜色,但绿色和蓝色分量不变。
  • redOff:产生输入颜色,其中红色分量发生偏移,而绿色和蓝色分量保持不变。
  • redMod:产生输入颜色,其红色分量由给定的百分比调制。如 50%的红色调制将红色分量减少一半。如 200%的红色调制会使红色分量加倍。
  • green:产生具有指定绿色成分的输入颜色,但红色和蓝色成分不变。
  • greenOff:产生输入颜色,其中绿色分量发生偏移,但红色和蓝色分量保持不变。
  • greenMod:产生输入颜色,其绿色分量由给定的百分比调制。如 50%的绿色调制将绿色分量减少一半。如 200%的绿色调制将绿色分量加倍。
  • blue:产生具有指定蓝色成分的输入颜色,但其红色和绿色成分不变。
  • blueOff:产生输入颜色,其中蓝色分量已移动,但红色和绿色分量未更改。
  • blueMod:产生输入颜色,其蓝色分量由给定的百分比调制。如 50%的蓝色调制可将蓝色分量减少一半。如 200%的蓝色调制使蓝色分量加倍。
  • gamma:产生其输入颜色的sRGB gamma偏移。
  • invGamma:产生其输入颜色的sRGB逆γ偏移。

详细请看 ECMA 376 的 L.4.8.3 文档和 20.1.2.3 Colors 文档

计算方法详细请看 【Openxml】颜色变化属性计算 - RyzenAdorer - 博客园

上面的所有标记了百分比的值的单位都是千倍百分比,也就是在 OpenXML 文档里写的值如下面代码,这里的 lumMod 就是表示百分比

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

这里的 65000 就是千倍百分比,每 1000 表示百分之一,关于单位请看Office Open XML 的测量单位

更多请看 Office 使用 OpenXML SDK 解析文档博客目录


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-OpenXML-%E9%A2%9C%E8%89%B2%E5%8F%98%E6%8D%A2.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

微软最具价值专家


无盈利,不卖课,做纯粹的技术博客

以下是广告时间

推荐关注 Edi.Wang 的公众号

欢迎进入 Eleven 老师组建的 .NET 社区

以上广告全是友情推广,无盈利