เอกสาร 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;

ดูเพิ่มเติม