Dokumentacija HotXLS

NearestIndexedColor metoda

Poišče najbližji vnos med fizičnimi režami palete 8..63 in vrne tako njegovo javno vrednost ColorIndex kot fizično režo

Metoda je na voljo tako pri IXLSWorkbook kot pri TXLSXWorkbook in ne spreminja stanja palete ali delovnega zvezka

Skladnja

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

Vhod

AArgb sprejme 24-bitno vrednost $00RRGGBB ali motno vrednost $FFRRGGBB

Ničelni bajt alfa se normalizira na $FF; delno prosojne vrednosti so zavrnjene, ker so vnosi indeksirane palete delovnega zvezka motni

Rezultat

PoljePomen
InputARGBNormalizirana motna vhodna barva
ColorIndexJavni indeks palete od 1 do 56
PaletteSlotFizična reža palete BIFF ali OOXML od 8 do 63
ARGBNormalizirana motna barva, shranjena v izbrani reži palete
DistanceSquaredKvadrirana evklidska razdalja v barvnem prostoru OKLab
ExactMatchRes, ko ima izbrani vnos iste kanale RGB kot normalizirani vhod

Funkcija vrne false za delno prosojen vhod ali ko predpomnilnik palete ni na voljo; ob napaki se ColorIndex inicializira na nič in PaletteSlot na -1

Pogodba o ujemanju

Vsak delovni zvezek predpomni normalizirane vrednosti ARGB in koordinate OKLab svojih 56 fizičnih vnosov palete

Ponastavitev palete znova izgradi celoten predpomnilnik, učinkovita sprememba ene reže pa posodobi samo to predpomnjeno režo

Vsaka poizvedba enkrat pretvori vhod in izvede eno fiksno preiskovanje 56 vnosov, brez zgodovine poizvedb ali neomejene rasti predpomnilnika

Enake razdalje izberejo najnižji javni indeks, vključno s podvojenimi barvami palete, tako da ostanejo rezultati deterministični med pogoni in zagoni

Samodejni, sistemski in neveljavni barvni žetoni niso kandidati; za razvrstitev teh vrednosti uporabite ResolveIndexedColor

Primer

if Workbook.NearestIndexedColor($FF13579B, Match) then
begin
  PaletteIndex := Match.ColorIndex;
  if Match.ExactMatch then
    UseExactPaletteColor(Match.ARGB);
end;

Glej tudi