基於framebuffer顯示圖片(bmp && png)和漢字
阿新 • • 發佈:2019-01-08
章節
1
功能描述2
圖片顯示,字型顯示介面3
使用例項
功能描述
圖片顯示
: 支援位置設定,支援BMP && PNG格式的圖片,程式通過讀取bmp&&PNG圖片的路徑,解析圖片的點陣掩碼mask,再把mask寫入framebuffer
漢字顯示
: 支援字型大小設定(修改程式碼),可以位置設定,字串輸入
ascii顯示
: 支援字型大小設定(需要修改程式碼),可以位置設定,ascii輸入
字型顯示分為漢字顯示和ascii(字母、數字、可見符號), 漢字是點陣檔案HZK16, 大小為262k,比之前的向量檔案小1.73M - 262k,引擎程式碼不依賴libz.so, libfreetype.so 大小為19k,比之前的向量引擎小278k - 19k,依賴libpng.so
定義介面
圖片顯示介面
: picture_write(x, y, picture_path);
引數
:
xy
: 顯示圖片位置
picture_path
: BMP圖片的路徑
漢字顯示介面
: void print_chinese(ft, chinese_str, x, y)
ascii顯示介面
void print_ascii(ft, ascii_str, x, x)
引數
:
ft
: 漢字顯示所需的上下文
chinese_str
: 顯示的字串,格式"北京銳和信"
ascii_str
: 顯示的ascii,格式"1234asdf"
xy
: 設定顯示的位置
注意
:
如果定義的x,y使圖片或漢字超出邊界,使圖片漢字未能完全顯示,忽略出界的部分。
使用例項
圖片
int main(int argc, char ** argv)
{
picture_write(0, 0, argv[1]);
return 0;
}
漢字
int main(int argc, char **argv)
{
struct ft f;
ft_init(&f);
print_chinese(&f, "北京銳和信", 0, 0);
return 0;
}
ascii
int main(int argc, char **argv) { struct ft f; ft_init(&f); print_ascii(&f, "1234567adsfsdf", 0, 0); return 0; }
特點
相對於向量字型,點陣字型靈活性比較差,漢字和字母、數字、可見符號需要不同的輸出顯示介面,字型大小變化需要修改顯示演算法,字型形式單一,但是點陣字型的優點在於佔用足夠小,總共不超過200k。