//显示一个指定大小的汉字 //x,y :汉字的坐标 //font:汉字GBK码 //size:字体大小 //mode:0,正常显示,1,叠加显示 void Show_Font(u16 x,u16 y,u8 *font,u8 size,u8 mode) { u8 temp,t,t1; u16 y0=y; u8 dzk[72]; u8 csize=(size/8+((size%8)?1:0))*(size);//得到字体一个字符对应点阵集所占的字节数 if(size!=12&&size!=16&&size!=24)return; //不支持的size Get_HzMat(font,dzk,size); //得到相应大小的点阵数据 for(t=0;t<csize;t++) { temp=dzk[t]; //得到点阵数据 for(t1=0;t1<8;t1++) { if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR); else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR); temp<<=1; y++; if((y-y0)==size) { y=y0; x++; break; } } } }
//显示一个指定大小的汉字 //x,y :汉字的坐标 //font:汉字GBK码 //size:字体大小 //mode:0,正常显示,1,叠加显示 void Show_Font(u16 x,u16 y,u8 *font,u8 size,u8 mode) { u8 temp,t,t1; u16 y0=y; u8 dzk[32]; u16 tempcolor; if(size!=12&&size!=16)return;//不支持的size Get_HzMat(font,dzk,size);//得到相应大小的点阵数据 if(mode==0)//正常显示 { for(t=0;t<size*2;t++) { temp=dzk[t];//得到12数据 for(t1=0;t1<8;t1++) { if(temp&0x80) LCD_DrawPoint(x,y); else { tempcolor=POINT_COLOR; POINT_COLOR=BACK_COLOR; LCD_DrawPoint(x,y); POINT_COLOR=tempcolor;//还原 } temp<<=1; y++; if((y-y0)==size) { y=y0; x++; break; } } } }else//叠加显示 { for(t=0;t<size*2;t++) { temp=dzk[t];//得到12数据 for(t1=0;t1<8;t1++) { if(temp&0x80)LCD_DrawPoint(x,y); temp<<=1; y++; if((y-y0)==size) { y=y0; x++; break; } } } } }
//显示一个指定大小的汉字 //x,y :汉字的坐标 //font:汉字GBK码 //size:字体大小 //mode:0,正常显示,1,叠加显示 void Show_Font(uint8_t x,uint8_t y,uint8_t *font,uint8_t size,uint8_t mode) { uint8_t temp,t,t1; uint8_t y0=y; uint8_t dzk[32]; uint16_t tempcolor; Get_HzMat(font,dzk,size);//得到相应大小的点阵数据 if(mode==0)//正常显示 { for(t=0;t<size*2;t++) { temp=dzk[t];//得到12数据 for(t1=0;t1<8;t1++) { if((temp << t1) & 0x80)LCD_DrawPoint1(x,y,POINT_COLOR); else { tempcolor=POINT_COLOR; POINT_COLOR=BACK_COLOR; LCD_DrawPoint1(x,y,POINT_COLOR); POINT_COLOR=tempcolor;//还原 } y++; if((y-y0)==size) { y=y0; x++; break; } } } }else//叠加显示 { for(t=0;t<size*2;t++) { temp=dzk[t];//得到12数据 for(t1=0;t1<8;t1++) { if((temp << t1) & 0x80)LCD_DrawPoint1(x,y,POINT_COLOR); y++; if((y-y0)==size) { y=y0; x++; break; } } } } }