NearestIndexedColor metódus
Megkeresi a legközelebbi bejegyzést a 8..63 fizikai palettahelyek között, és visszaadja annak nyilvános ColorIndex értékét és fizikai helyét
A metódus az IXLSWorkbook és a TXLSXWorkbook esetében egyaránt elérhető, és nem módosítja a paletta vagy a munkafüzet állapotát
Szintaxis
function NearestIndexedColor( AArgb: LongWord; out AMatch: TXLSNearestIndexedColorMatch): Boolean;
Bemenet
Az AArgb 24 bites $00RRGGBB értéket vagy átlátszatlan $FFRRGGBB értéket fogad
A nulla alfa-bájt $FF-re normalizálódik; a részben átlátszó értékek elutasításra kerülnek, mert a munkafüzet indexelt palettabejegyzései átlátszatlanok
Eredmény
| Mező | Jelentés |
|---|---|
InputARGB | A normalizált, átlátszatlan bemeneti szín |
ColorIndex | A nyilvános palettaindex 1-től 56-ig |
PaletteSlot | A fizikai BIFF vagy OOXML palettahely 8-tól 63-ig |
ARGB | A kiválasztott palettahelyen tárolt normalizált, átlátszatlan szín |
DistanceSquared | A négyzetes euklideszi távolság az OKLab színtérben |
ExactMatch | True, ha a kiválasztott bejegyzés RGB-csatornái azonosak a normalizált bemenettel |
A függvény false értéket ad vissza részben átlátszó bemenet esetén, vagy ha a paletta-gyorsítótár nem érhető el; hiba esetén a ColorIndex nullára, a PaletteSlot -1-re inicializálódik
Illesztési szerződés
Minden munkafüzet gyorsítótárazza 56 fizikai palettabejegyzésének normalizált ARGB és OKLab koordinátáit
A paletta visszaállítása újjáépíti a teljes gyorsítótárat, és egy hatásos egyhelyes módosítás csak azt a gyorsítótárazott helyet frissíti
Minden lekérdezés egyszer konvertálja a bemenetet, és egyetlen rögzített, 56 bejegyzéses átvizsgálást végez lekérdezési előzmények és korlátlan gyorsítótár-növekedés nélkül
Az azonos távolságok a legalacsonyabb nyilvános indexet választják, a duplikált palettaszíneket is beleértve, így az eredmények determinisztikusak maradnak enginkezelők és futtatások között
Az automatikus, rendszerszín- és érvénytelen színtokenek nem jelöltek; ezen értékek osztályozásához használja a ResolveIndexedColor metódust
Példa
if Workbook.NearestIndexedColor($FF13579B, Match) then
begin
PaletteIndex := Match.ColorIndex;
if Match.ExactMatch then
UseExactPaletteColor(Match.ARGB);
end;