NearestIndexedColor yöntemi
8..63 arasındaki fiziksel palet yuvaları arasından en yakın girdiyi bulur ve hem genel ColorIndex değerini hem de fiziksel yuvayı döndürür
Yöntem hem IXLSWorkbook hem de TXLSXWorkbook üzerinde kullanılabilir ve paleti veya çalışma kitabı durumunu değiştirmez
Sözdizimi
function NearestIndexedColor( AArgb: LongWord; out AMatch: TXLSNearestIndexedColorMatch): Boolean;
Giriş
AArgb 24 bitlik bir $00RRGGBB değerini veya opak bir $FFRRGGBB değerini kabul eder
Sıfır alfa baytı $FF olarak normalize edilir; kısmen saydam değerler, indeksli çalışma kitabı palet girdileri opak olduğu için reddedilir
Sonuç
| Alan | Anlam |
|---|---|
InputARGB | Normalize edilmiş opak giriş rengi |
ColorIndex | 1 ile 56 arasındaki genel palet indeksi |
PaletteSlot | 8 ile 63 arasındaki fiziksel BIFF veya OOXML palet yuvası |
ARGB | Seçilen palet yuvasında saklanan normalize edilmiş opak renk |
DistanceSquared | OKLab renk uzayındaki kare alınmış Öklid uzaklığı |
ExactMatch | Seçilen girdi normalize edilmiş girişle aynı RGB kanallarına sahipse True |
İşlev, kısmen saydam bir giriş için veya palet önbelleği kullanılamadığında false döndürür; başarısızlık durumunda ColorIndex sıfıra ve PaletteSlot -1'e ayarlanır
Eşleştirme sözleşmesi
Her çalışma kitabı 56 fiziksel palet girdisinin normalize edilmiş ARGB ve OKLab koordinatlarını önbelleğe alır
Palet sıfırlaması önbelleğin tamamını yeniden derler; etkili bir tek yuva değişikliği ise yalnızca o önbellekteki yuvayı günceller
Her sorgu girişi bir kez dönüştürür ve sorgu geçmişi ya da sınırsız önbellek büyümesi olmadan 56 girdilik sabit bir tarama gerçekleştirir
Eşit uzaklıklar, yinelenen palet renkleri dahi olsa en düşük genel indeksi seçer; böylece sonuçlar motorlar ve çalıştırmalar arasında belirlenimci kalır
Otomatik, sistem ve geçersiz renk belirteçleri aday değildir; bu değerleri sınıflandırmak için ResolveIndexedColor yöntemini kullanın
Örnek
if Workbook.NearestIndexedColor($FF13579B, Match) then
begin
PaletteIndex := Match.ColorIndex;
if Match.ExactMatch then
UseExactPaletteColor(Match.ARGB);
end;