打印

显示汉字的小代码

[复制链接]
1863|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dsoyy|  楼主 | 2009-9-3 11:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dsoyy 于 2009-9-3 11:40 编辑

本人用一款TFT,显示汉字,贴一段小代码(很多形参和我实际应用相关):
void disword_sd(uint32 num,uint32 wide,uint32 startx,uint32 starty,INT8U *str,uint16 backcolor,uint16 discolor)
{
    uint32  x,y,i=0,no;
    uint8 middat,dat;
   
    AMP506_WindowSet( startx,starty ,startx + wide ,starty + wide);  //开辟点阵显示窗体大小
   
   FD506_DisplayRAM_WriteEnable;    //设置数据地址指针
   
      
   no= num * 32;           //一个字32个点阵
   middat=str[no];  
    for(y=0; y<wide; y++)
   {
     for(x=0; x<wide; x++)
      {
       dat=middat&0x80;
        if(dat==0)
          TftSendDat(backcolor); //蓝色
        else
           TftSendDat(discolor); //WHITE
        middat=middat<<1;
        i++;
        if(i==8)
        {
         i=0;
           no++;
           middat=str[no];
        }
      }
    }
  
    FD506_DisplayRAM_WriteDisable;//
}

如上代码可以显示 汉字 但是有底色,如蓝底白字。

兰底白字.jpg (1.83 KB )

兰底白字.jpg

相关帖子

沙发
dsoyy|  楼主 | 2009-9-3 11:47 | 只看该作者
本帖最后由 dsoyy 于 2009-9-3 11:53 编辑

汉字点阵信息包括显示部分(字体),和不显示部分,如下的代码
        if(dat==0)
          TftSendDat(backcolor); //蓝色
        else
           TftSendDat(discolor); //WHITE
就是显示兰底白字的判断和显示过程,如果你显示的是字库点阵,就一定要把一个汉字全部点阵信息显示到屏上,包括背景色和前景色。

但是某些应用场所,如在一张美丽的图片上显示汉字,汉字的背景色无法和图片颜色相吻合,极大影响你的美观度,需要不显示背景色。

我采用如下方式来实现:
利用字库来判断当前位置是都属于显示汉字的位置(利用字库点阵),如果是,敲一点,不是就过。

代码如下:

因为我的图片使用QQ截取的,所以下面的汉字有白色底色。有空传一个真实的图片艳照。

无底色.jpg (1.71 KB )

无底色.jpg

无底色代码.jpg (52.22 KB )

无底色代码.jpg

使用特权

评论回复
板凳
dsoyy|  楼主 | 2009-9-3 15:13 | 只看该作者
前者速度比后者快很多,具体取决于画点函数

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

566

帖子

3

粉丝