颜色变换是对基础颜色的相关属性的修改。 例如,透明度是与颜色相关的属性。 颜色转换被指定为任何颜色模型标签的子标签,可以在任何颜色加上颜色变换
大概的写法如下
<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 的测量单位
本文会经常更新,请阅读原文: 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 社区
以上广告全是友情推广,无盈利