HotXLS-dokumentaatio

NearestIndexedColor metodi

Löytää lähimmän merkinnän fyysisten paletin paikkojen 8..63 joukosta ja palauttaa sekä sen julkisen ColorIndex-arvon että fyysisen paikan

Metodi on käytettävissä sekä IXLSWorkbook- että TXLSXWorkbook-luokissa, eikä se muuta palettia tai työkirjan tilaa

Syntaksi

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

Syöte

AArgb hyväksyy 24-bittisen $00RRGGBB-arvon tai läpinäkymättömän $FFRRGGBB-arvon

Nolla-alfatavu normalisoidaan arvoksi $FF; osittain läpikuultavat arvot hylätään, koska työkirjan indeksoidut palettimerkinnät ovat läpinäkymättömiä

Tulos

KenttäMerkitys
InputARGBNormalisoitu läpinäkymätön syöteväri
ColorIndexJulkinen palettiaindeksi väliltä 1–56
PaletteSlotFyysinen BIFF- tai OOXML-palettipaikka väliltä 8–63
ARGBNormalisoitu läpinäkymätön väri, joka on tallennettu valittuun palettipaikkaan
DistanceSquaredNeliöity euklidinen etäisyys OKLab-väriavaruudessa
ExactMatchTosi, kun valitulla merkinnällä on samat RGB-kanavat kuin normalisoidulla syötteellä

Funktio palauttaa arvon false osittain läpikuultavalle syötteelle tai kun palettivälimuisti ei ole käytettävissä; virhe alustaa ColorIndex-arvon nollaksi ja PaletteSlot-arvon arvoon -1

Vertailusopimus

Jokainen työkirja tallentaa välimuistiinsa 56:n fyysisen palettimerkintänsä normalisoidut ARGB- ja OKLab-koordinaatit

Paletin palautus rakentaa koko välimuistin uudelleen, ja yhden paikan toteutunut muutos päivittää vain kyseisen välimuistissa olevan paikan

Jokainen kysely muuntaa syötteen kerran ja suorittaa yhden kiinteän 56 merkinnän läpikäynnin ilman kyselyhistoriaa tai rajatonta välimuistin kasvua

Yhtä suuret etäisyydet valitsevat alimman julkisen indeksin, myös palettien kaksoiskappaleille, joten tulokset pysyvät deterministisinä moottoreiden ja suoritusten välillä

Automaattiset, järjestelmä- ja kelvottomat väri-tokenit eivät ole ehdokkaita; käytä ResolveIndexedColor-metodia näiden arvojen luokitteluun

Esimerkki

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

Katso myös