📄 hz24.c
字号:
/****************************************************************************************
* 文件名:hz24.C
* 功能:24*24 ASCII码字体及显示函数。
* 作者:路涛
* 日期:2006.10.13
* 备注:使用GUI_SetColor()函数设置前景颜色及背景色。
****************************************************************************************/
#include "config.h"
uint8 dcb2dex_tab[];
/****************************************************************************
* 名称:GUI_PutCharm_n()
* 功能:显示ASCII码(m*n字体),显示值为20H-7FH(若为其它值,则显示' ')。
* 入口参数: x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* m 指定一个字符显示的列数
* n 指定一个字符显示的行数
* hzxy[][m*n/8] 汉字码数组
* ch 要显示的ASCII码值。
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
/*
uint8 GUI_PutChar24(uint32 x, uint32 y,char ch)
{ uint8 font_dat;
uint8 i, j, k;
// 参数过滤
if( x>(GUI_LCM_XMAX-24) ) return(0);
if( y>(GUI_LCM_YMAX-32) ) return(0);
for(i=0;i<10;i++)
{
if(ch==hz24_tab[i])break;
i++;
}
k=i;
for(i=0; i<24; i++) // 显示共24行
{ for(j=0; j<24; j++) // 每行共24点
{ // 若当前点为0、8、16点,读取点阵数据
if((j==0)|(j==8)|(j==16)) font_dat = hz24[k][i*3+j/8];
// 设置相应的点为color或为back_color
if( (font_dat&dcb2dex_tab[j%8])==0 ) GUI_Point(x, y, RED);
else GUI_Point(x, y, GREEN);
x++;
}
y++; // 指向下一行
x -= 24; // 恢复x值
}
return(1);
}
*/
uint8 GUI_PutCharm_n(uint32 x, uint32 y, uint8 m, uint8 n, uint8 **hzm_n, char *hzm_n_tab, char ch)//m,n为行与列,m_n自行改为数字形式
{ uint8 font_dat;
uint8 i, j, k;
/* 参数过滤 */
if( x>(GUI_LCM_XMAX-n) ) return(0);
if( y>(GUI_LCM_YMAX-m) ) return(0);
for(i=0;i<10;i++)
{
if(ch==hzm_n_tab[i])break;
i++;
}
k=i;
for(i=0; i<m; i++) // 显示共m行
{ for(j=0; j<n; j++) // 每行共n点
{ // 若当前点为0、8、16...点,读取点阵数据
if(j&7==0) font_dat = hzm_n[k][i*3+j/8];
// 设置相应的点为color或为back_color
if( (font_dat&dcb2dex_tab[j%8])==0 ) GUI_Point(x, y, RED);
else GUI_Point(x, y, GREEN);
x++;
}
y++; // 指向下一行
x -= n; // 恢复x值
}
return(1);
}
/****************************************************************************
* 名称:GUI_PutStringm_n()
* 功能:输出显示字符串((m*n字体,没有自动换行功能)。
* 入口参数: x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* m 指定一个字符显示的列数
* n 指定一个字符显示的行数
* hzxy[][m*n/8] 汉字码数组
* str 要显示的ASCII码字符串
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
/*void GUI_PutString24(uint32 x, uint32 y, char *str)
{ while(1)
{ if( (*str)=='\0' ) break;
if( GUI_PutChar24(x, y, *str++)==0 ) break;
x += 24; // 下一个字符显示位置,y不变(即不换行)
}
}
*/
void GUI_PutStringm_n(uint32 x, uint32 y, uint8 m, uint8 n, uint8 **hzm_n, char *hzm_n_tab, char *str)//m_n自行改为数字形式
{ uint8 i,j;
i=0;
j=0;
while(1)
{ if( (*str)=='\0' ) break;
if(i>(GUI_LCM_XMAX-x)/n)
{
y+=m;
x=0;
j++;
}
if(j>(GUI_LCM_YMAX-y)/m)break;
if( GUI_PutCharm_n(x, y, m, n, hzm_n, hzm_n_tab, *str++)==0 ) break;
i++;
x += n; // 下一个字符显示位置,y不变(即不换行)
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -