HotXLS 文件

NearestIndexedColor 方法

在實體調色盤槽位 8..63 中找出最接近的項目,並同時傳回其公開 ColorIndex 值與實體槽位

此方法同時適用於 IXLSWorkbook 與 TXLSXWorkbook,且不會修改調色盤或活頁簿狀態

語法

function NearestIndexedColor(
  AArgb: LongWord;
  out AMatch: TXLSNearestIndexedColorMatch): Boolean;

輸入

AArgb 接受 24 位元的 $00RRGGBB 值或不透明的 $FFRRGGBB 值

Alpha 位元組為零時會被正規化為 $FF;部分透明的值會遭到拒絕,因為索引式活頁簿調色盤項目是不透明的

結果

欄位意義
InputARGB正規化後的不透明輸入色彩
ColorIndex1 到 56 之間的公開調色盤索引
PaletteSlot8 到 63 之間的實體 BIFF 或 OOXML 調色盤槽位
ARGB儲存在所選調色盤槽位上的正規化不透明色彩
DistanceSquaredOKLab 色彩空間中的歐幾里得距離平方
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;

另請參閱