6.7 获取宽度
完整的字符串宽度计算
获取宽度
GT_GetStringWidth 是完整的字符串宽度计算函数,通过查询每个字符的实际宽度来精确累加。与简易版本不同,该函数使用 GT_GetCharWidth 获取每个字符的真实像素宽度,适用于非等宽字体场景。
string_width.c
/**
@p: 字符点阵数组
@zfwidth: 显示字符的宽度
@zfhigh: 显示字符的高度
@return: 字符的实际最大宽度
*/
unsigned int get_width(unsigned char *p,unsigned int zfwidth,unsigned int zfhigh )
{
unsigned char *q;
unsigned int i,j,tem,tem1,witdh1=0,witdh2=0;
q=p;
for (i=0;i<zfwidth/16;i++)
witdh1=0;
for (j=0;j<16;j++)
}
witdh2+=witdh1;
}
return witdh2;
}
//
/**
@p: 字符点阵数组
@zfwidth: 显示字符的宽度
@zfhigh: 显示字符的高度
@return: 字符的实际最大宽度
*/
unsigned int get_width(unsigned char *p,unsigned int zfwidth,unsigned int zfhigh )
{
int high_i = 0,width_i = 0;
unsigned int record = 0;
unsigned int max_width = 0;
for(width_i = (zfwidth*2)-1; width_i >= 0; width_i--)
}
if( record )
}
if(width_i>=0)
return max_width/2+1;
else
return zfwidth/3;
}
/**************/
/**
只适用横置横排
@p: 字符点阵数组
@zfwidth: 显示字符的宽度
@zfhigh: 显示字符的高度
@return: 字符的实际最大宽度
*/
unsigned int get_width_1(unsigned char *p,unsigned int zfwidth,unsigned int zfhigh )
{
unsigned char width_Byte = zfwidth/8;
unsigned char record = 0;
unsigned int max_width = 0, cnt=0;
int i, j, m;
for(i=width_Byte-1; i>=0; i--)
if(record != 0)
}
for(m=0; m<8; m++)
}
return max_width;
}

