标题:仪器软件中大字体数值参数显示处理
作者:Favory.peng (2010/5/11)
在监护仪或其他医疗仪器中为了让测量的参数显示的更加醒目通常会用到一些很大的数字字体进行显示,这些数字点阵字库通常会占据很大的存储空间,对于嵌入式系统中资源很吃紧的情况下将是一笔不小的开销(这个也许不是什么大问题啦),但另一方面在显示这些大的测量参数时,一点点的画到屏幕参数显示区域效率非常之低;为了解决这一问题,我将告诉大家一个简单的点阵字库压缩存储和快捷显示的方法。
下图数字“8”的点阵为例:
我们可以用存储线条的方式来分解存储这个点阵,一个字节表示一个段线条(长度在128点之内),其中bit7表示该点的内容是黑还是白(0/1)及前景还是背景,后面的7位bit6~bit0存储连续相同的点的个数及线段长度;
由于数字的点阵结构比较简单,这种简单的压缩存储的方法将大大减少大字点阵库的存储空间。
另外用这种存储结构的点阵时,在进行点阵显示时也将大大的提高显示效率,我们可以利用画线条的方法进行点阵字库的显示,在大多LCD屏的控制器指令中都会对横向线条(显存连续)的绘制进行优化,至少省去了需要送显示地址的时间消耗。
点阵字库结构定义
Byte1:点阵类型标识(0-横向,1-竖向)
Byte2:字符的个数
Byte3:首字符编码
Byte4:点阵字符高度
Byte5:点阵字符宽度
Byte6~Byte10:保留位
Byte11~Byte50:字符点阵索引表(2个字节表示一个字符点阵起始位置,支持20个字符)
Byte51~Byte N:字符点阵数据段
点阵字符显示函数处理流程
1、根据首字符编码计算字符点阵索引位置
2、读取字符点阵索引信息,读取字符点阵数据
3、判断首位,若是前景以像素数为长度画直线,画满字符宽度长度后Y +1,X回首位
注意:在有些显存分区的平台中,需对画线函数进行优化,判断显存分区信息,若在分区交界,分两段直线绘制;
后记:虽然这篇技术含量不高,但这个ideal不错,希望对有类似应用的朋友有所帮助....