专栏首页林德熙的博客dotnet OpenXML 颜色变换

dotnet OpenXML 颜色变换

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

大概的写法如下

<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 文档里写的值如下面代码,这里的 lumMod 就是表示百分比

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • win10 uwp BadgeLogo 颜色

    本文讲的是在上传应用商店出现BadgeLogo颜色问题,和如何解决,因为我是渣渣,本文可能带有一定的主观性和局限性,说的东西可能不对或者不符合每个人的预期。如果...

    林德熙
  • gif 格式

    请看图片,gif 图分为图片文件头(File Header),gif信息(GIF Data Stream)和文件结尾(Trailer)三个部分,最主要的是 gi...

    林德熙
  • WPF 在 Alt+Tab 隐藏窗口

    最近在开发一个 Toast 窗口,因为这个窗口不能在显示之后关闭,因为可能用户会不停让窗口显示,所以只能 Hide 。但是这样会在 切换窗口看到这个窗口,所以我...

    林德熙
  • PHP 笔试 + 面试题

    本章主要介绍常见的 PHP 笔试 + 面试题,包括: ---- 基础及程序题 数据库技术题 综合技术题 项目及设计题 ---- 基础及程序题 [1] 写一...

    echobingo
  • 计算右侧小于当前元素的个数

    给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums...

    你的益达
  • PTA刷题记录:L1-055 谁是赢家 (10分)

    解题思路: 使用一个数组接收输入的裁判的票数,以便进行遍历对 0 和 1 进行计数。之后按照题目要求进行判断输出即可。

    英雄爱吃土豆片
  • 一文读懂JAVA并发容器类HashMap

    1、对Key求Hash值,然后再计算下标。 2、如果没有碰撞(存在,链地址法),直接放入桶中(碰撞的意思是计算得到的Hash值相同,需要放到同一个bucket中...

    IT故事会
  • Android自定义单选多选下拉列表的实例代码

    我的思路是自定义一个类继承PopupWindow,里面的选项采用Listview,再结合一些动画来实现。

    砸漏
  • 性能专题:Locust工具实战之创建性能测试

    在前面的文章中,我们介绍了性能测试框架Locust是什么:性能专题:Locust工具实战之开篇哲学三问,以及如何安装它:性能专题:Locust工具实战之“蝗虫”...

    测试开发技术
  • 【易错概念】UTXO 和 Account 模型对比

    在当前区块链世界中,主要有两种记录保存方式,UTXO 模式(Unspent Transaction Output) 和 Account 模式。Bitcoin 采...

    辉哥

扫码关注云+社区

领取腾讯云代金券