void Gui_DrawFont_GBK16(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s) { unsigned char i,j;// unsigned short k,x0; x0=x; while(*s) { if((*s) < 128) { k=*s; if (k==13) { x=x0; y+=16;// } else { if (k>32) k-=32; else k=0; for(i=0;i<16;i++) for(j=0;j<8;j++) { if(asc16[k*16+i]&(0x80>>j)) Gui_DrawPoint(x+j,y+i,fc); else { if (fc!=bc) Gui_DrawPoint(x+j,y+i,bc); } } x+=8; } s++; } else { for (k=0;k<hz16_num;k++) { if ((hz16[k].Index[0]==*(s))&&(hz16[k].Index[1]==*(s+1))) { for(i=0;i<16;i++) { for(j=0;j<8;j++) { if(hz16[k].Msk[i*2]&(0x80>>j)) Gui_DrawPoint(x+j,y+i,fc); else { if (fc!=bc) Gui_DrawPoint(x+j,y+i,bc); } } for(j=0;j<8;j++) { if(hz16[k].Msk[i*2+1]&(0x80>>j)) Gui_DrawPoint(x+j+8,y+i,fc); else { if (fc!=bc) Gui_DrawPoint(x+j+8,y+i,bc); } } } } } s+=2;x+=16; } } }
时间: 2024-02-02 14:03:25 浏览: 176
huizhi.rar_按钮控件_Visual_C++_
这段代码是用于在GUI界面上绘制GB2312编码的16x16的汉字和ASCII字符的函数。函数中使用了两个数组,一个是asc16用于存储ASCII码的16x16像素点信息,另一个是hz16用于存储GB2312汉字的16x16像素点信息。函数通过循环遍历字符串中的每一个字符,如果是ASCII码则直接在asc16中查找对应的像素点信息,如果是汉字则在hz16中查找对应的像素点信息。最后使用Gui_DrawPoint函数将像素点画在指定的坐标上。
阅读全文