
MCU-Renderer เป็นไลบรารีกราฟิก C-Language สำหรับ MCUs โดยมุ่งเน้นไปที่การแสดงข้อความที่ไม่ลื่นไถลการต่อต้านการใช้งานที่มีการใช้ทรัพยากรต่ำทั้งในโมโนโครมและจอ LCD สี
ในการเริ่มต้นใช้ MCU-Renderer ให้รวมไฟล์ส่วนหัวที่เหมาะสม
ในการเริ่มต้นไลบรารีให้เรียกใช้ฟังก์ชัน mr_xxx_init() ที่เกี่ยวข้อง การแสดงผลจะถูกปิดในขั้นต้นทำให้คุณสามารถวาดได้ก่อนการอัปเดตหน้าจอแรก หากต้องการเปิดการแสดงผลให้โทร mr_xxx_set_display() บนหน้าจอ LCD สีคุณต้องปิดการใช้งานโหมดสลีปด้วย mr_xxx_set_sleep()
ถัดไปตั้งค่าแบบอักษร คุณสามารถใช้ฟอนต์ที่มีอยู่ในโฟลเดอร์ Fonts หรือเตรียมตัวเองตามที่คำอธิบายการเตรียมการอธิบาย
หลังจากนั้นตั้งค่าเค้าโครงหน้าจอซึ่งประกอบด้วยสี่เหลี่ยมที่ไม่ทับซ้อนกัน สิ่งนี้จะหลีกเลี่ยงการกะพริบเมื่ออัปเดตหน้าจอ
ในการวาดสี่เหลี่ยมที่เต็มไปด้วย mr_set_fill_color() เพื่อตั้งค่าสีเติมและ mr_draw_rectangle() สำหรับการวาดจริง คุณสามารถแปลงสีของเว็บ (เช่น #FF2020) เป็นสี MCU-Renderer ด้วยมาโคร mr_get_color
ในการวาดบิตแมปใน uint8_t FrameBuffer ที่ผู้ใช้ให้ไว้ให้โทร mr_set_stroke_color() เพื่อตั้งค่าสีเบื้องหน้า mr_set_fill_color() เพื่อตั้งค่าสีพื้นหลังและ mr_draw_bitmap() เพื่อวาดบิตแมป
หากต้องการวาดภาพใน Framebuffer RGB565 ที่ผู้ใช้ให้โทร mr_draw_image()
ในการวาดรูปสี่เหลี่ยมผืนผ้าให้โทรหา mr_set_font() เพื่อตั้งค่าตัวอักษร mr_set_fill_color() เพื่อตั้งค่าสีพื้นหลัง mr_set_stroke_color() เพื่อตั้งค่าสีข้อความและ mr_draw_text mr_draw_text_utf8() mr_draw_text() , mr_draw_text_utf16() ตามลำดับ พารามิเตอร์ offset ระบุมุมบนซ้ายของข้อความภายในรูปสี่เหลี่ยมผืนผ้าวาด: ไปยังข้อความตรงกลางในแนวนอนใช้ mr_get_text_width() , mr_get_text_utf8_width() และ mr_get_text_utf16_width() ; หากต้องการอยู่ตรงกลางข้อความในแนวตั้งรับตัวชี้วัดของตัวอักษรปัจจุบันด้วย mr_get_cap_height() (ความสูงของตัวพิมพ์ใหญ่ A), mr_get_ascent() mr_get_descent() ) (ด้านบนของเส้นไปยังพื้นฐาน), mr_get_line_height() ตรวจสอบให้แน่ใจว่าคุณตั้งค่าแบบอักษรก่อนที่จะดึงตัวชี้วัดใด ๆ
ขอบเขตสี่เหลี่ยมอาจไม่เกินขนาดที่แสดง พารามิเตอร์ offset ของฟังก์ชั่นการวาดข้อความไม่ จำกัด
การแสดงแบบโมโนโครมและ SDL ต้องการการรีเฟรชหน้าจอ สำหรับการรีเฟรชหน้าจอให้โทรหา mr_xxx_refresh_screen() หลังจากที่คุณวาดภาพเสร็จแล้ว
ดูโฟลเดอร์ตัวอย่าง
(อักขระ ascii 0x20-0x7e)
(ขนาดในไบต์)
| แบบอักษร | Roboto 12 px | Roboto 24 px | Roboto 48 px | Roboto 72 px |
|---|---|---|---|---|
| ADAFRUIT_GFX/TFT_ESPI (1 BPP) | 3832 | 14589 | 56677 | 129389 |
| U8G2 (1 BPP) | ค.ศ. 1508 | 3039 | 6632 | N/A |
| MCU-Renderer 1 BPP | 1473 | 2891 | 5902 | 9511 |
| MCU-Renderer 2 BPP | 2052 | 4162 | 8743 | 13969 |
| MCU-Renderer 3 BPP | 2695 | 5677 | 12128 | พ.ศ. 2413 |
| MCU-Renderer 4 BPP | 3328 | 7329 | ค.ศ. 15533 | 23676 |
| McUfont (4 BPP) | 3125 | 6296 | 12969 | 2548 |
| TFT_ESPI (VLW) | 7642 | 2480 | 65833 | 143333 |
ในการแปลงแบบอักษรของคุณเป็นรูปแบบ MCU-Renderer ให้ใช้เครื่องมือ fontconv (มีอยู่ในรูปแบบไบนารีภายใต้การเผยแพร่) ซึ่งช่วยให้คุณสามารถแปลงทั้งแบบอักษร .bdf และ .pcf Bitmap รวมถึง .ttf , .ttc , .otf , .otc และ .woff Vector
ในการพิมพ์ดิจิตอล 72 คะแนนมักจะถูกกำหนดเป็น 96 พิกเซล สำหรับการแรสเตอร์ตัวอักษรเวกเตอร์เป็นขนาดพิกเซลที่กำหนดให้แปลงขนาดพิกเซลเป็นขนาดจุดโดยการคูณด้วยปัจจัย 4/3 ไม่ใช่แบบอักษรทั้งหมดที่ปฏิบัติตามกฎนี้ดังนั้นคุณอาจต้องปรับแต่งปัจจัยนี้
fontconv คำนวณความสูงของฝา (ความสูงของตัวอักษรตัวพิมพ์ใหญ่ A) เป็นความแตกต่างระหว่างความสูงของการขึ้น (บนของเส้นไปยังพื้นฐาน) และความสูงของเชื้อสาย (พื้นฐานถึงด้านล่างของเส้น) ในแบบอักษรบางอย่างการคำนวณนี้ไม่ถูกต้องดังนั้นคุณสามารถแทนที่ความสูงของหมวกเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง นอกจากนี้คุณยังสามารถแทนที่ความสูงของการขึ้นและความสูงของเชื้อสาย