|
发表于 2007-12-1 20:52:34
|
显示全部楼层
没图片。不知道。
斜体?还是拖影啊。
网站的字库软件里面选者斜体。或则画图形斜体字调用图形点整也行。
移动的最好方法是。在
cont char str[]={0,0,1,2,3.0.0};
cont char a[][32]={0};//0
{};//1
{};//2
{};//3
屏幕宽 width
1 读取str取现在的字符ID:HZid,HZidTmp。
2 读取字符flash地址HZaddr=a[]+HZid*32 ;
偏移地址HZip=HZaddr;
3 读取字节显示HZaddr++;输出到屏
if(HZaddr>(a[]+HZidtmp*32 ))//完成一个汉字
『HZidtmp++.HZaddr=a[]+HZidtmp*32 ;』
width++{if(width>16)完成显示HZip++;』
if(hzip》HZaddr+32)『HZid++; 返回 1 』//偏移出一个字符。则整整显示完一个字符。
HZaddr=HZip;HZidtmp=HZid
返回3 }
-------------程序为准------------------------------------
/*欢迎光临!*//* 字符句前后要加空白区域缓冲 */
const prog_char Str0[]={10,5,4,0,1,2,3,4,5,6,6};
const prog_char Hzk[][32]={
//No:0 欢 使用频度=1
{},
//No:1 迎 使用频度=1
{},
//No:2 光 使用频度=1
{},
//No:3 临 使用频度=1
{},
//No:4 ♀
{},
//No:5 ♂
//No:6
{};
void printHZ_move(const int addrID0,const int addrHZ0,unsigned char wh,const unsigned char Tc, unsigned char f)
{ unsigned int i;//const prog_char *addrtmp,*addrHZ;
unsigned int addrHZ;//实际显示字符的变量
unsigned char strNUM,addrIP,strID;
unsigned int addrtmp;//刷新屏汉字移动的tmp变量
unsigned char strIDtmp,addrIPtmp;
unsigned char j,width,m,uc,ac,top,tp,fl;//tp=0;//,wh=wh0;//wh*16字高+tp顶<MaxY
ac=1;addrIP=1;uc=f;m=0;//底色,字符色,字符列偏移m,字符ID偏移 addrip=1act=ac=uc+1;f预留选择花样模式
if(wh>(MaxY/16))wh=MaxY/16;tp=(MaxY-wh*16)/2; /*if(tp>(MaxY-16*wh))tp=MaxY-16*wh;根据屏点修正宽度和顶点值,由于录入时保证,现为居中*/
strNUM=pgm_read_byte(addrID0);//字符ID +0 ,第一个为字符个数
f=MaxX&0x01;//ScreenUp 0 ScreenDown 1,与宏关联
fl=MaxY-(wh<<4)-tp;//wh*16
/* 移动输出字符 (列移动)全屏扫描输出*/
strID=pgm_read_byte(addrID0+addrIP);//读取字符号
strIDtmp=strID;//另存每行输出起始字符号.移动效果实现
addrHZ=addrHZ0+strIDtmp*32;//字符号读取字符首地址strIDtmp*32
addrIPtmp=addrIP;//另存每行字符ID
for(i=0;i<strNUM*16;i++)//每次输出一列笔划,16*16字符库,所以字符串列长度 字符数strNUM*16
{ //m=32,完成一个字符长度的偏移输出,addrIP,addrHZ,strID 各自自加
if(m>=32){m=0; addrIP++;strID=pgm_read_byte(addrID0+addrIP);//读取字符号
addrHZ=addrHZ0+strID*32;//read ptr HZ
}
addrIPtmp=addrIP;//读取行首字符偏移ID,作用str0中读取字符库偏移地址
addrtmp=addrHZ+m;//输出字符列偏移地址=字符首地址+偏移,移动效果
//每完成一次MaxX全屏输出,m+=2,递进列输出,
strIDtmp=strID; //读取行首字符ID
for(j=0;j<MaxX;)//全屏输出,每列输出后加一(字宽控制,列重复输出)
{
『输出程序』
【 宽度控制
【自己的显示控制高度】
j++;//列运算。
】
addrtmp+=2;//字符列地址+1,每列2byte,
if(addrtmp<(addrHZ0+strIDtmp*32+32)){//一个汉字字库空间32byte每列2byte
}else{addrIPtmp++;strIDtmp=pgm_read_byte(addrID0+addrIPtmp);//完成一个字符显示,读取字符号
addrtmp=addrHZ0+strIDtmp*32;//strID=strIDtmp;//addrtmp=addrHZ;//+m;
ac++;
if(ac>7){ac=1;}
}
if(addrIPtmp>strNUM){break;}//字符ID偏移大于字符数,超出范围,即完成输出字符
}/* 全屏幕输出控制 */
m+=2;//字体偏移
load_enable;
load_unable;
intDelayMS(Tc*10);
}
}
-------任意长宽高输出--------------------- |
|