“【教程】中英文显示取模设置”的版本间的差异

来自LCD wiki
跳转至: 导航搜索
中文取模
第34行: 第34行:
 
16X16汉字取模对应显示函数:
 
16X16汉字取模对应显示函数:
  
 +
{{code|1=
 
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);//恢复窗口为全屏 
 +
}
  
}
+
}}
  
 
24X24汉字取模设置
 
24X24汉字取模设置

2018年8月9日 (四) 15:33的版本

底层支撑函数

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)
{
	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);//恢复窗口为全屏  
}

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);//恢复窗口为全屏