NearestIndexedColor 메서드
물리적 팔레트 슬롯 8..63 중에서 가장 가까운 항목을 찾아 공용 ColorIndex 값과 물리적 슬롯을 모두 반환합니다
이 메서드는 IXLSWorkbook과 TXLSXWorkbook 모두에서 사용할 수 있으며 팔레트나 통합 문서 상태를 수정하지 않습니다
구문
function NearestIndexedColor( AArgb: LongWord; out AMatch: TXLSNearestIndexedColorMatch): Boolean;
입력
AArgb는 24비트 $00RRGGBB 값 또는 불투명한 $FFRRGGBB 값을 허용합니다
알파 바이트가 0이면 $FF로 정규화됩니다. 부분적으로 투명한 값은 인덱스 통합 문서 팔레트 항목이 불투명하므로 거부됩니다
결과
| 필드 | 의미 |
|---|---|
InputARGB | 정규화된 불투명 입력 색 |
ColorIndex | 1부터 56까지의 공용 팔레트 인덱스 |
PaletteSlot | 8부터 63까지의 물리적 BIFF 또는 OOXML 팔레트 슬롯 |
ARGB | 선택된 팔레트 슬롯에 저장된 정규화된 불투명 색 |
DistanceSquared | OKLab 색 공간에서의 제곱 유클리드 거리 |
ExactMatch | 선택된 항목이 정규화된 입력과 동일한 RGB 채널을 가질 때 true |
부분적으로 투명한 입력이거나 팔레트 캐시를 사용할 수 없으면 함수는 false를 반환합니다. 실패 시 ColorIndex는 0으로, 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;