“【教程】中英文显示取模设置”的版本间的差异
(创建页面,内容为“123”) |
|||
第1行: | 第1行: | ||
− | + | 底层支持函数: | |
+ | |||
+ | LCD_DrawPoint | ||
+ | |||
+ | LCD_SetWindows(x,y,x+16-1,y+16-1); | ||
+ | |||
+ | LCD_DrawPoint(x,y); | ||
+ | |||
+ | 12X6 | ||
+ | |||
+ | 16X8英文取模设置 | ||
+ | |||
+ | 16X8汉字取模对应显示函数: | ||
+ | |||
+ | void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) | ||
+ | |||
+ | { | ||
+ | |||
+ | } | ||
+ | |||
+ | .. | ||
+ | |||
+ | .. | ||
+ | |||
+ | 64X32英文取模设置 | ||
+ | |||
+ | 64X32英文取模对应显示函数: | ||
+ | |||
+ | void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) | ||
+ | |||
+ | { | ||
+ | |||
+ | } | ||
+ | |||
+ | /******************************************************** | ||
+ | |||
+ | 16X16汉字取模设置 | ||
+ | |||
+ | 16X16汉字取模对应显示函数: | ||
+ | |||
+ | void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) | ||
+ | |||
+ | { | ||
+ | |||
+ | } | ||
+ | |||
+ | 24X24汉字取模设置 | ||
+ | |||
+ | 24X24汉字取模对应显示函数: | ||
+ | |||
+ | void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) | ||
+ | |||
+ | { | ||
+ | |||
+ | } | ||
+ | |||
+ | void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) | ||
+ | |||
+ | void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) | ||
+ | |||
+ | { | ||
+ | |||
+ | u8 i,j; | ||
+ | |||
+ | u16 k; | ||
+ | |||
+ | u16 HZnum; | ||
+ | |||
+ | u16 x0=x; | ||
+ | |||
+ | HZnum=sizeof(tfont16)/sizeof(typFNT_GB16); //自动统计汉字数目 | ||
+ | |||
+ | for (k=0;k<HZnum;k++) | ||
+ | |||
+ | { | ||
+ | |||
+ | if ((tfont16[k].Index[0]==*(s))&&(tfont16[k].Index[1]==*(s+1))) | ||
+ | |||
+ | { LCD_SetWindows(x,y,x+16-1,y+16-1); | ||
+ | |||
+ | for(i=0;i<16*2;i++) | ||
+ | |||
+ | { | ||
+ | |||
+ | for(j=0;j<8;j++) | ||
+ | |||
+ | { | ||
+ | |||
+ | if(!mode) //非叠加方式 | ||
+ | |||
+ | { | ||
+ | |||
+ | if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint_16Bit(fc); | ||
+ | |||
+ | else LCD_DrawPoint_16Bit(bc); | ||
+ | |||
+ | } | ||
+ | |||
+ | else | ||
+ | |||
+ | { | ||
+ | |||
+ | POINT_COLOR=fc; | ||
+ | |||
+ | if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//画一个点 | ||
+ | |||
+ | x++; | ||
+ | |||
+ | if((x-x0)==16) | ||
+ | |||
+ | { | ||
+ | |||
+ | x=x0; | ||
+ | |||
+ | y++; | ||
+ | |||
+ | break; | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响 | ||
+ | |||
+ | } | ||
+ | |||
+ | LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏 | ||
+ | |||
+ | } |
2018年8月9日 (四) 15:31的版本
底层支持函数:
LCD_DrawPoint
LCD_SetWindows(x,y,x+16-1,y+16-1);
LCD_DrawPoint(x,y);
12X6
16X8英文取模设置
16X8汉字取模对应显示函数:
void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode)
{
}
..
..
64X32英文取模设置
64X32英文取模对应显示函数:
void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode)
{
}
/********************************************************
16X16汉字取模设置
16X16汉字取模对应显示函数:
void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode)
{
}
24X24汉字取模设置
24X24汉字取模对应显示函数:
void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode)
{
}
void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode)
void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode)
{
u8 i,j;
u16 k;
u16 HZnum;
u16 x0=x;
HZnum=sizeof(tfont16)/sizeof(typFNT_GB16); //自动统计汉字数目
for (k=0;k<HZnum;k++)
{
if ((tfont16[k].Index[0]==*(s))&&(tfont16[k].Index[1]==*(s+1)))
{ LCD_SetWindows(x,y,x+16-1,y+16-1);
for(i=0;i<16*2;i++)
{
for(j=0;j<8;j++)
{
if(!mode) //非叠加方式
{
if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint_16Bit(fc);
else LCD_DrawPoint_16Bit(bc);
}
else
{
POINT_COLOR=fc;
if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//画一个点
x++;
if((x-x0)==16)
{
x=x0;
y++;
break;
}
}
}
}
}
continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
}
LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏
}