
MCU-Renderer adalah perpustakaan grafis C-bahasa untuk MCU, berfokus pada rendering teks yang tidak mengapung dan anti-alias dengan penggunaan sumber daya rendah pada tampilan LCD monokrom dan warna.
Untuk mulai menggunakan MCU-Renderer, sertakan file header yang sesuai.
Untuk menginisialisasi pustaka, hubungi fungsi mr_xxx_init() yang sesuai. Layar awalnya dimatikan, memungkinkan Anda untuk menggambar sebelum pembaruan layar pertama. Untuk menyalakan tampilan, hubungi mr_xxx_set_display() . Pada layar LCD warna, Anda juga perlu menonaktifkan mode tidur dengan mr_xxx_set_sleep() .
Selanjutnya, atur font. Anda dapat menggunakan font yang tersedia di folder Fonts, atau menyiapkan sendiri, seperti yang dijelaskan bagian Fonts Font.
Setelah itu, atur tata letak layar yang terdiri dari persegi panjang yang tidak tumpang tindih. Ini akan menghindari berkedip saat memperbarui layar.
Untuk menggambar persegi panjang yang diisi, hubungi mr_set_fill_color() untuk mengatur warna isi dan mr_draw_rectangle() untuk gambar yang sebenarnya. Anda dapat mengonversi warna web (misalnya #FF2020) menjadi warna MCU-Renderer dengan makro mr_get_color .
Untuk menggambar bitmap dalam framebuffer uint8_t yang disediakan pengguna, hubungi mr_set_stroke_color() untuk mengatur warna latar depan, mr_set_fill_color() untuk mengatur warna latar belakang dan mr_draw_bitmap() untuk menggambar bitmap.
Untuk menggambar gambar di RGB565 Framebuffer yang disediakan pengguna, hubungi mr_draw_image() .
Untuk menggambar Text Rectangle, hubungi mr_set_font() untuk mengatur font, mr_set_fill_color() untuk mengatur warna latar belakang, mr_set_stroke_color() untuk mengatur warna teks, dan mr_draw_text() , mr_draw_text_utf8 () dan mr_draw_text (), mr_draw_text_utf8() dan mr_draw_text_utf16() , mr_draw_text_utf8 () dan mr_draw_text (mr_draw_text_utf8 () dan mr_draw_text (mr_draw_text_utf8 () dan mr_draw_text (mr_text16 dan mr_draw_text string, masing -masing. Parameter offset menentukan sudut kiri atas teks dalam gambar persegi panjang: ke pusat teks secara horizontal, gunakan mr_get_text_width() , mr_get_text_utf8_width() dan fungsi mr_get_text_utf16_width() ; Untuk memusatkan teks secara vertikal, dapatkan metrik font saat ini dengan mr_get_cap_height() (Tinggi huruf besar A), mr_get_ascent() (bagian atas garis ke baseline), mr_get_descent() (garis dasar ke bawah) dan mr_get_line_height() (ketinggian baris). Pastikan Anda mengatur font sebelum mengambil metrik apa pun.
Batas persegi panjang tidak boleh melebihi ukuran tampilan. Parameter offset fungsi menggambar teks tidak terbatas.
Tampilan monokrom dan SDL memerlukan penyegaran layar. Untuk menyegarkan layar, hubungi mr_xxx_refresh_screen() setelah Anda selesai menggambar.
Lihat folder contoh.
(Karakter ASCII 0x20-0x7e)
(Ukuran byte)
| Font | 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 | 18701 |
| MCU-Renderer 4 BPP | 3328 | 7329 | 15533 | 23676 |
| McUfont (4 BPP) | 3125 | 6296 | 12969 | 20045 |
| TFT_ESPI (VLW) | 7642 | 19387 | 65833 | 143333 |
Untuk mengonversi font Anda ke format MCU-Renderer, gunakan alat fontconv (tersedia dalam bentuk biner di bawah rilis), yang memungkinkan Anda mengonversi .bdf dan .pcf Bitmap Fonts serta .ttf , .ttc , .otf , .otc dan .woff vektor font.
Dalam tipografi digital, 72 poin biasanya didefinisikan sebagai 96 piksel. Untuk rasterisasi font vektor ke ukuran piksel yang diberikan, konversi ukuran piksel ke ukuran titik dengan mengalikan dengan faktor 4/3. Tidak semua font mengikuti aturan ini, jadi Anda mungkin perlu mengubah faktor ini.
fontconv menghitung tinggi tutup (ketinggian huruf huruf besar A) sebagai perbedaan antara ketinggian pendakian (atas garis ke baseline) dan tinggi keturunan (baseline ke bawah garis). Pada beberapa font, perhitungan ini tidak akurat, sehingga Anda dapat mengesampingkan ketinggian tutup untuk mencapai hasil yang benar. Anda juga dapat mengesampingkan ketinggian pendakian dan ketinggian keturunan.