教你如何放大显示ASCII字符(文本模式)

发布时间:2011-2-17 14:59    发布者:小可爱ing
关键词: ASCII , 放大显示 , 字符
/* 以'#'符号来显示放大显示ASCII字符(以前的老资料,适用于DOS环境)
说明:0xF000FA6E这个地址是每个(ASCII)字符显示点阵的首地址,
每个字符大小为8*8,每个字符点阵占连续的8个字节,每一字节表示
一行,从上而下,从左而右.

参考以下代码:
*/
#include
#include
void ShowBigChar(int x,int y,char ch)
{ /* 单个字符放大 */
int i,j;
char far *position;
unsigned char test;
position=(char far *)0xF000FA6EL+ch*8;/* 获取ch对应的字符点阵的首地址*/
for(i=0;i<8;++i) /* 8行 */
{
gotoxy(x*8+1,y+i); /* 8*8点阵,所以每个字符占8列 */
test = 0x80; /* 对应2进制为1000,0000 */
for(j=0;j<8;++j) /* 8列 */
{
if(*position & test) putchar('#');/* 按位与,若不为0,即显示# */
else putchar(' ');/* 否则不显示 */
test>>=1; /* 左移一位,依次变成0100,0000 0010,0000 0001,0000 ... */
}
++position; /* 移到下一字节,既点阵的第2行*/
}
}
void ShowBigString(char str[])
{ /* 字符串放大 */
int i;
if(strlen(str)>30)
{ /* 因为屏幕大小为80*25,所以每行最多显示
80/8=10个字符,最多显示25/8=3行 */
printf("Too much word! ( <30 )");
return;
}for(i=0;str!='\0';++i) /* 逐个字符显示 */
ShowBigChar(i%10,i/10*8+1,str); /* i/10*8换行*/
}
int main()
{
char s[] = "xql0501 QQ: 527274766";/* 要放大显示的字符串 */
clrscr(); /* 清屏 */
ShowBigString(s); /* 放大显示 */
getch();
return 0;
}
本文地址:https://www.eechina.com/thread-54382-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
hszx 发表于 2011-2-20 08:41:04
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表