|
本帖最后由 chun2495 于 2017-6-6 14:49 编辑
我们在做嵌入式界面时,有两种方案可供选择 :1是用商业化的gui,比如emwin。2是自己做界面。
下面主要介绍方法2。
先贴张图,对比下锯齿的效果
我找过很多软件,想能否生成抗锯齿的字体,都没找到。想着以后自己用QT写一个抗锯齿字体的提取软件,这是后话。
在photoshop中,我们输入的文字默认都是抗锯齿的,我想很多人都想过用图片的方式将每个字母的抗锯齿图片保存下来,然后放入flash或内存中,调用显示。
这样最是简单,但是也很暴力,因为工作量太大,为了适应不同的背景,工作量也是倍数增加,后期的维护也是很悲催的。
我介绍的方法是将所有的字母写在一个背景图片中,然后程序上调用显示。具体做法如下:
1, photoshop中,先将背景颜色设置好
2, 键入需要的ascii字符(我这里用了标准ascii和欧文集iso88591)
3, 保存为 .bmp格式,然后打开彩色取模(我用的是Img2Lcd)软件,生成.h 数据,保存在内存中。或者生成.bin文件,保存在外部存储器中。
4, 调用字库显示一个字符函数如下:
- void Char_UbuntuMono_FrontGround_8_17(int x, int y, unsigned char c)
- {//8*32 = 256 wide
- //17*5 = 85 high
- unsigned int i, j, factor;
-
- if(c < 128) c = c - ' ';
- else c = c - 96;
-
- factor = c/32;
-
- for(i = 0;i < 17; i++){
- for(j = 0; j < 8; j++){
- frambuf[800*(i + x) + j + y] = UbuntuMono_FrontGround_8_17[256*2*(factor*17 + i) + (c - factor*32)*8*2 + j*2]<<8|
- UbuntuMono_FrontGround_8_17[256*2*(factor*17 + i) + (c - factor*32)*8*2 + j*2 + 1];
- }
- }
- }
复制代码
显示字符串函数如下:
- void String_UbuntuMono_FrontGround_8_17(int x,int y, unsigned char *str)
- {
- unsigned char *p = str;
- while (*p != 0){
- Char_UbuntuMono_FrontGround_8_17(x, y, *p);
- y = y + 8;
- p++;
- }
- }
复制代码
最后贴张抗锯齿界面图
往期帖子 :
液晶多级菜单实现加强版 https://www.amobbs.com/thread-5599589-1-1.html
嵌入式全键盘拼音输入法分享 https://www.amobbs.com/thread-5668320-1-1.html
ucgui下制作漂亮按键 https://www.amobbs.com/thread-5551143-1-1.html |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|