好像是XY翻转了,钢铁侠那个中文显示有点小问题,我参考原子的代码简单修改了下
[mw_shl_code=c,true]void LCD_Show_Font(u16 x,u16 y,u8 size)
{
u8 mode;
u8 temp,t,t1;
u16 y0=y;
// u8 dzk[32];
u32 tempcolor,tempbkcolor;
u8 PrePenSize;//保存画笔尺寸
PrePenSize = GUI_GetPenSize();
GUI_SetPenSize(1);
// if(size!=12&&size!=16)return;//不支持的size
// Get_HzMat(font,dzk,size);//得到相应大小的点阵数据
tempcolor=GUI_GetColor();
tempbkcolor=GUI_GetBkColor();
mode = GUI_GetTextMode();
if(mode==GUI_TM_NORMAL)//正常显示,文字前景色,背景色填充
{
for(t=0;t<size*2;t++)
{
temp=GUI_FontDataBuf[t];//得到12数据
for(t1=0;t1<8;t1++)
{
if(temp&0x80)GUI_DrawPoint(x,y);
else
{
GUI_SetColor(tempbkcolor);
GUI_DrawPoint(x,y);
GUI_SetColor(tempcolor);//还原
}
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}
}
}
else if(mode==GUI_TM_REV)//反转显示,文字背景色,前景色填充
{
for(t=0;t<size*2;t++)
{
temp=GUI_FontDataBuf[t];//得到12数据
for(t1=0;t1<8;t1++)
{
if(temp&0x80)
{
GUI_SetColor(tempbkcolor);
GUI_DrawPixel(x,y);
}
else
{
GUI_SetColor(tempcolor);
GUI_DrawPixel(x,y);
}
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}
}
}
else if(mode==GUI_TM_TRANS)//叠加显示,透明显示
{
for(t=0;t<size*2;t++)
{
temp=GUI_FontDataBuf[t];//得到12数据
for(t1=0;t1<8;t1++)
{
if(temp&0x80)GUI_DrawPoint(x,y);
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}
}
}
else if(mode==GUI_TM_XOR)//反色显示,透明显示
{
GUI_SetDrawMode(GUI_DRAWMODE_XOR);
for(t=0;t<size*2;t++)
{
temp=GUI_FontDataBuf[t];//得到12数据
for(t1=0;t1<8;t1++)
{
if(temp&0x80)GUI_DrawPoint(x,y);
temp<<=1;
y++;
if((y-y0)==size)
{
y=y0;
x++;
break;
}
}
}
}
GUI_SetPenSize(PrePenSize);
GUI_SetColor(tempcolor);
GUI_SetBkColor(tempbkcolor);
}[/mw_shl_code]
这样中文也支持EMWIN的字体显示效果
|