พาเลตสีที่กำหนดเอง
ภาพรวม
สมุดงาน Excel จัดการการจัดรูปแบบสีโดยใช้สองโมเดล: พาเลตแบบจัดทำดัชนี 56 สีแบบเก่าใน BIFF8 (XLS แบบดั้งเดิม) และการผูก RGB ตามอำเภอใจหรือช่องธีมใน OpenXML (XLSX) HotXLS จัดเตรียม API ให้ปรับแต่งดัชนีการแมปพาเลตและเชื่อมช่องว่างระหว่างรูปแบบเหล่านี้ได้อย่างราบรื่น
การจัดทำดัชนีสีพาเลต
รูปแบบ BIFF8 แมปสีการจัดรูปแบบไปยังรายการดัชนีตั้งแต่ 8 ถึง 63 ใช้อินเทอร์เฟซสีของสมุดงานเพื่อแทนที่นิยามสีเริ่มต้น
procedure SetColor(const AIndex: Integer; const AColor: TColor);
หากคุณกำหนดค่า RGB ที่กำหนดเองให้กับเซลล์โดยตรงโดยไม่อัปเดตดัชนีพาเลต HotXLS จะแมปไปยังสีที่ใกล้ที่สุดในพาเลตที่ใช้งานอยู่ของสมุดงานโดยอัตโนมัติ
การ resolve สี indexed แบบ deterministic
IXLSWorkbook และ TXLSXWorkbook มีโอเวอร์โหลด ResolveIndexedColor ที่คู่กันสำหรับตีความดัชนีโดยไม่แก้สมุดงาน
ผู้เรียกระบุพื้นที่ดัชนีต้นทางว่าเป็น ColorIndex แบบ public, BIFF icv หรือ OOXML indexed ผลลัพธ์จะแยกแยะ token ประเภท palette, automatic, system และ invalid ออกจากกัน และรายงานค่า ARGB ที่ normalize แล้วเฉพาะเมื่อมีสีจริงให้อ้าง
Token แบบ system และ automatic จะไม่อ่านค่า desktop ปัจจุบันเงียบ ๆ เอง ถ้าต้องการเอาต์พุต RGB ที่ขึ้นกับสภาพแวดล้อม ให้ส่ง system-color resolver แบบระบุชัดเข้าไป
บทบาทการใช้งาน (usage role) ยังคงความหมายเฉพาะของแต่ละรูปแบบไว้ เช่น ดัชนีเส้นขอบของ BIFF เท่ากับศูนย์แปลว่าไม่ระบุ ไม่ใช่สีดำ
ใช้ NearestIndexedColor เมื่อต้องแมปค่า RGB ไปยังรายการพาเลตจริงที่ใกล้ที่สุด ตัวจับคู่ OKLab ที่แคชไว้และใช้ร่วมกันจะคืนดัชนีแบบ public และ physical โดยไม่แก้สมุดงาน
ใช้ ScanIndexedColorUsage เพื่อสำรวจช่องทั้ง 56 ช่องแบบ deterministic ก่อนวางแผนแก้พาเลต นิยามและการอ้างอิงจากสไตล์, ออบเจกต์ในแผ่นงาน, แผนภูมิ, หมายเหตุ และการจัดรูปแบบตามเงื่อนไข จะมาร์คช่องที่ถูกกระทบว่าล็อกไว้
การวางแผนพาเลตโดยไม่ mutate
ใช้ BuildBiffPalettePlan พรีวิวว่า RGB ตรง ๆ และสีธีมที่ resolve แล้วจะลงช่องพาเลต BIFF จริงทั้ง 56 ช่องได้อย่างไร โดยไม่แก้สมุดงาน
แผนที่ได้จะเก็บทุกช่อง indexed ที่ถูกรายงานว่าล็อกไว้ตามเดิม, คงสีตรงที่มีอยู่ไว้ที่ช่องตรงที่ต่ำสุด, จัดสรรสีตรงไปเรื่อย ๆ ตราบที่ยังมีที่ว่าง และจะใช้การจัดกลุ่ม OKLab แบบถ่วงน้ำหนักความถี่ที่ deterministic เฉพาะเมื่อเป้าหมายที่ไม่ซ้ำกันเกินจำนวนช่องว่าง
แต่ละเป้าหมายรายงานดัชนี public และ physical ที่ถูกเลือก, ค่า ARGB ที่แมปแล้ว, น้ำหนักความถี่, ระยะทางการรับรู้แบบกำลังสอง และสถานะแมตช์ตรง ส่วนฟิลด์สรุปรายงานน้ำหนักแบบแมตช์ตรง, ความคลาดเคลื่อนแบบถ่วงน้ำหนัก, ความคลาดเคลื่อนสูงสุด, จำนวนช่องที่เปลี่ยน และว่าต้อง quantize หรือไม่
เลข generation และ hash ของพาเลตต้นทางช่วยให้ ApplyBiffPalettePlan ปฏิเสธแผนที่เก่าหรือถูกแก้ ก่อนที่ช่องใดจะเปลี่ยน เมื่อใช้แผนสำเร็จจะ rebuild ตัวจับคู่ที่แคชไว้หนึ่งครั้ง และแผน no-op ที่ถูกต้องจะไม่ทำให้ generation เปลี่ยน
สมุดงานแบบ classic ยังเปิดเผย BiffPaletteSavePolicy ด้วย ค่าเริ่มต้นจะเก็บพาเลตเดิมไว้ ส่วนค่าบังคับ optimize จะสร้างและใช้แผนปัจจุบันเฉพาะตอนเขียน BIFF8 และจะคืนพาเลตเดิมถ้าบันทึกล้มเหลวหรือถูกยกเลิก
การแมปสี RGB แบบสมบูรณ์
สมุดงาน XLSX ข้ามข้อจำกัดของพาเลตและอนุญาตให้กำหนดค่า RGB แบบ 24 บิตโดยตรง ตรวจสอบ API การแปลงสีด้านล่าง
- คุณสมบัติ Workbook Colors — เข้าถึงสีพาเลตตามดัชนี
- เมธอด ResolveIndexedColor — จัดประเภทและ resolve สีแบบ indexed ตามต้องการ
- เมธอด NearestIndexedColor — หารายการพาเลตจริงที่ใกล้ที่สุดด้วยการจับคู่เชิงการรับรู้ที่แคชไว้
- เมธอด ScanIndexedColorUsage — สำรวจนิยาม, การอ้างอิง, ชนิดผู้ใช้ และล็อกการอนุรักษ์ของทุกช่องพาเลตจริง
- เมธอด BuildBiffPalettePlan — พรีวิวการวาง true color และการ quantize แบบ deterministic โดยไม่แก้สถานะสมุดงาน
- เมธอด ApplyBiffPalettePlan — ตรวจและใช้แผนพาเลต 56 ช่องปัจจุบันแบบ atomic
- คุณสมบัติ BiffPaletteSavePolicy — เลือกเอาต์พุตพาเลต BIFF8 แบบคงเดิมหรือ optimize แบบระบุชัดสำหรับสมุดงาน Classic
- ภาพรวมโมเดลสี — ตรรกะการแปลงสีสำหรับ XLS แบบดั้งเดิม
- Interior SetThemeColor — กำหนดค่าการเติมสีเซลล์โดยใช้ธีม Office