Τεκμηρίωση HotXLS

Μέθοδος NearestIndexedColor

Βρίσκει την πλησιέστερη εγγραφή ανάμεσα στις φυσικές υποδοχές παλέτας 8..63 και επιστρέφει τόσο τη δημόσια τιμή ColorIndex της όσο και τη φυσική υποδοχή

Η μέθοδος είναι διαθέσιμη τόσο στο IXLSWorkbook όσο και στο TXLSXWorkbook και δεν τροποποιεί την παλέτα ή την κατάσταση του βιβλίου εργασίας

Σύνταξη

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

Είσοδος

Το AArgb δέχεται μια τιμή $00RRGGBB 24 bit ή μια αδιαφανή τιμή $FFRRGGBB

Ένα byte άλφα μηδέν κανονικοποιείται σε $FF· οι μερικώς διαφανείς τιμές απορρίπτονται επειδή οι ευρετηριασμένες εγγραφές της παλέτας του βιβλίου εργασίας είναι αδιαφανείς

Αποτέλεσμα

ΠεδίοΣημασία
InputARGBΤο κανονικοποιημένο αδιαφανές χρώμα εισόδου
ColorIndexΟ δημόσιος δείκτης παλέτας από 1 έως 56
PaletteSlotΗ φυσική υποδοχή παλέτας BIFF ή OOXML από 8 έως 63
ARGBΤο κανονικοποιημένο αδιαφανές χρώμα που είναι αποθηκευμένο στην επιλεγμένη υποδοχή της παλέτας
DistanceSquaredΗ τετραγωνισμένη Ευκλείδεια απόσταση στον χρωματικό χώρο OKLab
ExactMatchTrue όταν η επιλεγμένη εγγραφή έχει τα ίδια κανάλια RGB με την κανονικοποιημένη είσοδο

Η συνάρτηση επιστρέφει false για μερικώς διαφανή είσοδο ή όταν η cache της παλέτας δεν είναι διαθέσιμη· σε αποτυχία το ColorIndex αρχικοποιείται σε μηδέν και το PaletteSlot σε -1

Σύμβαση αντιστοίχισης

Κάθε βιβλίο εργασίας κρατά στην cache τις κανονικοποιημένες συντεταγμένες ARGB και OKLab των 56 φυσικών εγγραφών της παλέτας του

Μια επαναφορά της παλέτας ξαναχτίζει ολόκληρη την cache και μια αποτελεσματική αλλαγή μίας υποδοχής ενημερώνει μόνο την αντίστοιχη cached υποδοχή

Κάθε ερώτημα μετατρέπει την είσοδο μία φορά και εκτελεί μία σταθερή σάρωση 56 εγγραφών, χωρίς ιστορικό ερωτημάτων ή απεριόριστη ανάπτυξη cache

Οι ίσες αποστάσεις επιλέγουν το χαμηλότερο δημόσιο ευρετήριο, συμπεριλαμβανομένων και των διπλότυπων χρωμάτων παλέτας, ώστε τα αποτελέσματα να παραμένουν ντετερμινιστικά ανάμεσα σε μηχανές και εκτελέσεις

Τα tokens αυτόματων, συστηματικών και άκυρων χρωμάτων δεν είναι υποψήφια· χρησιμοποιήστε την ResolveIndexedColor για να ταξινομήσετε αυτές τις τιμές

Παράδειγμα

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

Δείτε επίσης