[Matrix LED] Bài 12: Thay đổi kích thước font chữ

Một trong những vấn đề mà nhiều bạn khá quan tâm khi làm việc với màn hình LED có độ phân giải lớn hay các màn LCD là làm sao để thay đổi đa dạng kích cỡ của font chữ.

Chúng ta có thể tạo sẵn nhiều bộ font đa kích cỡ, cách này cũng rất OK do các màn led và lcd có độ phân giải khá nhỏ 🙁 nhưng 1 ngày đẹp trời bạn phải làm việc với 1 màn hình rất lớn thì sao, việc tạo quá nhiều bộ font sẽ gây lãng phí bộ nhớ !

Cách đơn giản nhất là chúng ta sẽ tạo 1 bộ font có kích thước to nhất rồi tiến hành thu nhỏ nó lại, việc này sẽ giúp font đẹp hơn là phóng to lên từ font nhỏ do sự thiếu hụt thông tin (sẽ cần các thuật toán nội suy phức tạp)

Ánh xạ font lớn thành font nhỏ

Rồi, giờ chỉ cần tính hệ số chênh lệch giữa font gốc và font cần thu nhỏ thôi ! Sau khi có được hệ số chỉ cần nhân nó cùng tọa độ ở hàm Matrix_setpx là được 🙂

Ví dụ, mình sẽ tạo 1 bộ font gốc có Width (rộng) là 105 và Height (cao) là 140 tức 105×140.

Trước tiên nhắc lại hàm vẽ chữ ở bài 4 cái đã

Với 7 ở đây là chiều cao tối đã của font, và 6 là chiều rộng tối đa của font, mình sẽ đưa 2 thông số này vào 1 cái #define cho tiện. Và kích cỡ font lúc này không còn là 6×7 nữa mà là 105×140

Và giờ viết lại hàm Matrix_guikitu và thêm vào 2 tham số sizeW, sizeH

Cách dùng

Chúng ta chỉ cần tạo gọi hàm với chữ cái cần in và kích cỡ chiều dài, chiều rộng của chữ thôi 🙂

Demo Resize Font

Về cơ bản, thuật toán này cũng phóng to font lên được, nhưng font bị phóng to sẽ xuất hiện răng cưa trông không đẹp !

 

Từ tác giả:

Nếu có bất kì thắc mắc nào trong bài viết, vui lòng để lại comment dưới mỗi bài ! Mình sẽ không trả lời thắc mắc của các bạn ở facebook hay email !

Nếu trong phần code bạn nhìn thấy nhưng thứ kiểu như &amp; thì đó là lỗi hiển thị, cụ thể 3 kí tự < > & bị biến đổi thành như thế
&amp; là &
&lt;  là <
&gt; là >

Giới thiệu Đào Nguyện 80 bài viết
DIY,chế cháo, viết blog chia sẽ kiến thức về lập trình,điện tử - IoT. Rất mong được giao lưu, kết bạn với các bạn cùng đam mê. Địa chỉ Facebook: https://www.facebook.com/nguyendao207

4 bình luận

Đã đóng bình luận.