NearestIndexedColor 方法
在實體調色盤槽位 8..63 中找出最接近的項目,並同時傳回其公開 ColorIndex 值與實體槽位
此方法同時適用於 IXLSWorkbook 與 TXLSXWorkbook,且不會修改調色盤或活頁簿狀態
語法
function NearestIndexedColor( AArgb: LongWord; out AMatch: TXLSNearestIndexedColorMatch): Boolean;
輸入
AArgb 接受 24 位元的 $00RRGGBB 值或不透明的 $FFRRGGBB 值
Alpha 位元組為零時會被正規化為 $FF;部分透明的值會遭到拒絕,因為索引式活頁簿調色盤項目是不透明的
結果
| 欄位 | 意義 |
|---|---|
InputARGB | 正規化後的不透明輸入色彩 |
ColorIndex | 1 到 56 之間的公開調色盤索引 |
PaletteSlot | 8 到 63 之間的實體 BIFF 或 OOXML 調色盤槽位 |
ARGB | 儲存在所選調色盤槽位上的正規化不透明色彩 |
DistanceSquared | OKLab 色彩空間中的歐幾里得距離平方 |
ExactMatch | 當所選項目與正規化輸入具有相同的 RGB 色版時為 True |
輸入為部分透明或調色盤快取無法使用時,函式會傳回 false;失敗時 ColorIndex 會初始化為零,PaletteSlot 會初始化為 -1
比對合約
每個活頁簿都會快取其 56 個實體調色盤項目的正規化 ARGB 與 OKLab 座標
調色盤重設會重建完整快取,而有效的單一槽位變更只會更新對應的快取槽位
每次查詢只會轉換輸入一次,並執行一次固定的 56 項目掃描,沒有查詢歷程,快取也不會無界限成長
距離相等時選擇最低的公開索引(包括重複的調色盤色彩),因此結果在各引擎與各次執行之間保持確定性
自動、系統與無效色彩語彙基元不是候選;請使用 ResolveIndexedColor 對這些值進行分類
範例
if Workbook.NearestIndexedColor($FF13579B, Match) then
begin
PaletteIndex := Match.ColorIndex;
if Match.ExactMatch then
UseExactPaletteColor(Match.ARGB);
end;