/**************************************************************************** * 名称:GUI_PutChar24_32() * 功能:显示ASCII码(24*32字体),显示值为'0'-'9'、'.'、'+'、'-'及':'(若为其它值,则显示' ')。 * 入口参数: x 指定显示位置,x坐标 * y 指定显示位置,y坐标 * ch 要显示的ASCII码值。 * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。 * 说明:操作失败原因是指定地址超出有效范围。 ****************************************************************************/ uint8 GUI_PutChar24_32(uint32 x, uint32 y, uint8 ch) { uint8 font_dat; uint8 i, j; TCOLOR bakc;
/* 参数过滤 */ if( x>=(GUI_LCM_XMAX-8) ) return(0); if( y>=(GUI_LCM_YMAX-8) ) return(0); for(i=0; i<14; i++) { if(FONT24x32_TAB==ch) break; } ch = i; for(i=0; i<32; i++) // 显示共32行 { for(j=0; j<24; j++) // 每行共24点 { /* 若当前点为0、8、16点,读取点阵数据 */ if( (j&0x07)==0 ) font_dat = FONT24x32[ch][i*3+j>>3]; /* 设置相应的点为color或为back_color */ if( (font_dat&DCB2HEX_TAB[j])==0 ) GUI_CopyColor(&bakc, back_color); else GUI_CopyColor(&bakc, disp_color); GUI_Point(x, y, bakc); x++; } y++; // 指向下一行 x -= 24; // 恢复x值 } return(1); } /**************************************************************************** * 名称:GUI_PutString() * 功能:输出显示字符串(没有自动换行功能)。 * 入口参数: x 指定显示位置,x坐标 * y 指定显示位置,y坐标 * str 要显示的ASCII码字符串 * 出口参数:无 * 说明:操作失败原因是指定地址超出有效范围。 ****************************************************************************/ void GUI_PutString2432(uint32 x, uint32 y, char *str) { while(1) { if( (*str)=='\0' ) break; if( GUI_PutChar24_32(x, y, *str++)==0 ) break;//此行本人改为上面的涵数,原为GUI_PutChar(5*7)的字符涵数. x += 24; // 下一个字符显示位置,y不变(即不换行) } }
以上程序我用的ZLG的,只改为了一行程序,结果显示不出来数字??改为5*7的字符涵数,能正常输出?? 为什么啊,是不是GUI_PutChar24_32这涵数有问题?? 小弟先谢谢了
|