เมธอด 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 |
ExactMatch | True เมื่อรายการที่เลือกมีช่องสัญญาณ 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;