مستندات HotXLS

متد NearestIndexedColor

نزدیک‌ترین مدخل را میان خانه‌های فیزیکی پالت از 8 تا 63 می‌یابد و هم مقدار عمومی ColorIndex و هم خانه فیزیکی آن را برمی‌گرداند

این متد هم روی IXLSWorkbook و هم روی TXLSXWorkbook در دسترس است و وضعیت پالت یا کتاب کار را تغییر نمی‌دهد

نحو

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

ورودی

AArgb مقدار $00RRGGBB با عمق 24 بیت یا مقدار مات $FFRRGGBB را می‌پذیرد

بایت آلفای صفر به $FF نرمال می‌شود؛ مقادیر نیمه‌شفاف رد می‌شوند، زیرا مدخل‌های پالت مفهرس کتاب کار مات هستند

نتیجه

فیلدمعنی
InputARGBرنگ ورودی مات نرمال‌شده
ColorIndexاندیس عمومی پالت از 1 تا 56
PaletteSlotخانه فیزیکی پالت BIFF یا OOXML از 8 تا 63
ARGBرنگ مات نرمال‌شده ذخیره‌شده در خانه منتخب پالت
DistanceSquaredفاصله اقلیدسی به توان دو در فضای رنگ OKLab
ExactMatchTrue وقتی کانال‌های RGB مدخل منتخب با ورودی نرمال‌شده یکسان باشند

تابع برای ورودی نیمه‌شفاف یا وقتی حافظه پنهان پالت در دسترس نیست، false برمی‌گرداند؛ شکست، ColorIndex را صفر و PaletteSlot را 1- مقداردهی اولیه می‌کند

قرارداد تطبیق

هر کتاب کار مقادیر ARGB نرمال‌شده و مختصات OKLab مدخل‌های فیزیکی 56گانه پالت خود را در حافظه پنهان نگه می‌دارد

بازنشانی پالت، حافظه پنهان کامل را بازسازی می‌کند و تغییر مؤثر یک خانه تنها همان خانه ذخیره‌شده را به‌روزرسانی می‌کند

هر پرس‌وجو ورودی را یک بار تبدیل می‌کند و اسکن ثابتی روی 56 مدخل انجام می‌دهد، بدون تاریخچه پرس‌وجو و بدون رشد نامحدود حافظه پنهان

فاصله‌های برابر کمترین اندیس عمومی را برمی‌گزینند، از جمله برای رنگ‌های تکراری پالت، تا نتایج در میان موتورها و اجراها قطعی بمانند

توکن‌های خودکار، سیستمی و رنگ نامعتبر نامزد نیستند؛ برای طبقه‌بندی آن مقادیر از ResolveIndexedColor استفاده کنید

مثال

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

همچنین ببینید