/* 以'#'符號來顯示放大顯示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; } |