ResolveIndexedColor 方法
对索引颜色标记进行分类,并在工作簿调色板或调用方提供的系统颜色解析器能够提供具体 ARGB 值时解析出该值
该方法在 IXLSWorkbook 和 TXLSXWorkbook 上均可用,并且不会修改工作簿状态
语法
function ResolveIndexedColor( AIndex: Int64; ASpace: TXLSIndexedColorSpace; out AResolution: TXLSIndexedColorResolution): Boolean; overload; function ResolveIndexedColor( AIndex: Int64; ASpace: TXLSIndexedColorSpace; ARole: TXLSIndexedColorRole; ASystemResolver: TXLSTryResolveSystemColor; out AResolution: TXLSIndexedColorResolution): Boolean; overload;
索引空间
| 空间 | 解释 |
|---|---|
xicsPublicColorIndex | 公共调色板索引 1..56 映射到 BIFF 调色板槽位 8..63;带符号或无符号的 xlColorIndexAutomatic 被归类为自动 |
xicsBiffIcv | BIFF 索引会根据所选角色进行验证:字体和批注颜色使用 IcvFont 子集,边框和填充颜色使用 IcvXF 子集,图表颜色使用 IcvChart 子集,一般查找使用完整的 Icv 表 |
xicsOoxmlIndexed | OOXML 索引 0..63 寻址索引调色板,64 和 65 标识系统前景和背景,更大的值无效 |
结果
| 字段 | 含义 |
|---|---|
Kind | xickPalette、xickAutomatic、xickSystem 或 xickInvalid |
RawIndex | 未作更改的输入值 |
PaletteSlot | 从零开始的物理调色板槽位,当标记不是基于调色板时为 -1 |
SystemColorRole | 语义系统角色,包括窗口文本、窗口背景、图表文本、图表背景、图表中性色或工具提示文本 |
ARGB | 当 HasResolvedColor 为 true 时的规范化具体颜色 |
HasResolvedColor | 只有当调色板查找、固定格式颜色或显式回调产生了 RGB 值时才为 True |
函数返回值与 HasResolvedColor 一致;当函数返回 false 时,分类信息仍可在 AResolution 中获得
系统颜色约定
短重载从不读取当前的 Windows 桌面,因此自动以及依赖环境的系统颜色保持未解析状态
长重载把 TXLSSystemColorRole 和 TXLSIndexedColorRole 都传递给 ASystemResolver,让调用方能够应用显式的 UI、导出或无界面渲染策略
回调输出必须使用 $AARRGGBB 通道顺序;Alpha 字节为零会被规范化为 $FF,而回调返回 false 时,语义标记保持已分类但未解析的状态
Windows COLORREF 使用 $00BBGGRR 通道顺序,必须在回调返回之前转换为 $AARRGGBB
无效标记绝不会调用回调,固定的 BIFF 图表中性色标记无需回调即可解析为不透明的黑色
示例
if Workbook.ResolveIndexedColor(12, xicsPublicColorIndex, Resolution) then UseArgb(Resolution.ARGB); if not Workbook.ResolveIndexedColor($40, xicsBiffIcv, Resolution) then Assert(Resolution.Kind = xickSystem);