更多操作
创建页面,内容为“*'''32x32中文字体取模说明''' :尺寸设置如下图所示: :750px :取模成功后需要定义以下结构体数组存放取模数…” |
无编辑摘要 |
||
| 第3行: | 第3行: | ||
:尺寸设置如下图所示: | :尺寸设置如下图所示: | ||
:[[File:Module-008.jpg|750px]] | :[[File:Module-008.jpg|750px]] | ||
:取模成功后需要定义以下结构体数组存放取模数据(结构体定义见 | :取模成功后需要定义以下结构体数组存放取模数据(结构体定义见[https://www.lcdwiki.com/zh/%E3%80%90%E6%95%99%E7%A8%8B%E3%80%91%E4%B8%AD%E8%8B%B1%E6%96%87%E6%98%BE%E7%A4%BA%E5%8F%96%E6%A8%A1%E8%AE%BE%E7%BD%AE#.E4.B8.AD.E6.96.87.E6.B1.89.E5.AD.97.E5.8F.96.E6.A8.A1 '''中英文显示取模设置''']): | ||
{{code|1= | {{code|1= | ||
const typFNT_GB32 tfont32[]= | const typFNT_GB32 tfont32[]= | ||
2020年3月10日 (二) 18:21的最新版本
- 32x32中文字体取模说明
- 尺寸设置如下图所示:

- 取模成功后需要定义以下结构体数组存放取模数据(结构体定义见中英文显示取模设置):
const typFNT_GB32 tfont32[]=
{
"中",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x80,0x00,
0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
0x08,0x01,0x80,0x30,0x0F,0xFF,0xFF,0xF0,0x0C,0x01,0x80,0x20,0x0C,0x01,0x80,0x20,
0x0C,0x01,0x80,0x20,0x0C,0x01,0x80,0x20,0x0C,0x01,0x80,0x20,0x0C,0x01,0x80,0x20,
0x0C,0x01,0x80,0x20,0x0C,0x01,0x80,0x20,0x0F,0xFF,0xFF,0xE0,0x0C,0x01,0x80,0x20,
0x0C,0x01,0x80,0x20,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
};
- 函数定义如下:
void GUI_DrawFont32(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode)
{
u8 i,j;
u16 k;
u16 HZnum;
u16 x0=x;
HZnum=sizeof(tfont32)/sizeof(typFNT_GB32); //自动统计汉字数目
for (k=0;k<HZnum;k++)
{
if ((tfont32[k].Index[0]==*(s))&&(tfont32[k].Index[1]==*(s+1)))
{
LCD_SetWindows(x,y,x+32-1,y+32-1);
for(i=0;i<32*4;i++)
{
for(j=0;j<8;j++)
{
if(!mode) //非叠加模式:字体带有背景色,显示时会将原来显示的内容覆盖掉
{
if(tfont32[k].Msk[i]&(0x80>>j))
{
Lcd_WriteData_16Bit(fc);
}
else
{
Lcd_WriteData_16Bit(bc);
}
}
else //叠加模式:字体不带背景色,直接叠加显示到原来显示的内容上
{
POINT_COLOR=fc;
if(tfont32[k].Msk[i]&(0x80>>j))
{
LCD_DrawPoint(x,y);// 画一个点
}
x++;
if((x-x0)==32)
{
x=x0;
y++;
break;
}
}
}
}
}
continue; //找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
}
LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);// 恢复窗口为全屏
}