HotXLS Belgeleri

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ç

AlanAnlam
InputARGBNormalize edilmiş opak giriş rengi
ColorIndex1 ile 56 arasındaki genel palet indeksi
PaletteSlot8 ile 63 arasındaki fiziksel BIFF veya OOXML palet yuvası
ARGBSeçilen palet yuvasında saklanan normalize edilmiş opak renk
DistanceSquaredOKLab renk uzayındaki kare alınmış Öklid uzaklığı
ExactMatchSeç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;

Ayrıca bkz.