HotXLS dokumentáció

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
InputARGBA normalizált, átlátszatlan bemeneti szín
ColorIndexA nyilvános palettaindex 1-től 56-ig
PaletteSlotA fizikai BIFF vagy OOXML palettahely 8-tól 63-ig
ARGBA kiválasztott palettahelyen tárolt normalizált, átlátszatlan szín
DistanceSquaredA négyzetes euklideszi távolság az OKLab színtérben
ExactMatchTrue, 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;

Lásd még