📄 putccex.c
字号:
/*
PutCCEx.C -- 图形方式下显示24点阵放大汉字
*/
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
#define ST 1
#define KT 2
#define FS 3
#define HT 4
FILE *fp;
void InitGra(void);
int OpenLIB(int);
void ErrMsg();
void Quit();
void PutCCEx(int, int, int, int, int, int, char *Str);
int main(void)
{
char *Str = "图形方式下显示24点阵放大汉字";
InitGra();
if (! OpenLIB(KT)) ErrMsg();
PutCCEx(0, 150, 2, 2, 2, YELLOW, Str);
getch();
Quit();
return 0;
}
void InitGra(void)
{
int GraphMode, DraphDrive = DETECT;
registerbgidriver(EGAVGA_driver) ;
initgraph(&DraphDrive, &GraphMode, "") ;
}
void Quit()
{
fcloseall();
closegraph();
}
int OpenLIB(int LibNam)
{
switch(LibNam)
{
case ST:
if ((fp = fopen("c:\\ucdos\\CLIB24S", "rb")) == NULL) return 0;
break;
case KT: if ((fp = fopen("LJ_FILE\HZK24K", "rb")) == NULL) return 0;
break;
case FS:
if ((fp = fopen("c:\\ucdos\\CLIB24F", "rb")) == NULL) return 0;
break;
case HT:
if ((fp = fopen("c:\\ucdos\\CLIB24H", "rb")) == NULL) return 0;
break;
}
return 1;
}
void ErrMsg()
{
printf("Open LIB File Error!");
getch();
Quit();
}
/* 放大显示汉字
x, y: 汉字起点坐标;
Wid: 汉字间距(象素点数);
Xt, Yt: X方向和Y方向的放大倍数;
Color: 汉字的颜色;
Str: 汉字串;
*/
void PutCCEx(int x, int y, int Wid, int Xt, int Yt, int Color, char *Str)
{
unsigned Zcode, Bcode; /* 区码, 位码 */
int Rec, i1, i2, i3, i4, i5;
long Len;
char Buf[72];
while (*Str) /* 直到字串显示完 */
{
if ((*Str & 0x80) && (*(Str+1) &0x80)) /* 是汉字 */
{
Zcode = (*Str-0xa1) & 0x07f; /* 区码 */
Bcode = (*(Str+1)-0xa1) & 0x07f; /* 位码 */
Rec = Zcode*94+Bcode; /* 记录号 */
Len = Rec*72L; /* 在字库中位置 */
fseek(fp, Len, SEEK_SET);
fread (Buf, 1, 72, fp); /* 72字节 */
for (i1 = 0; i1 < 24*Xt; i1 += Xt)
for (i4 = 0; i4 < Xt; i4++)
for (i2 = 0; i2 < 3; i2++)
for (i3 = 0; i3 < 8; i3++)
if (Buf[i1/Xt*3+i2] >> (7-i3) & 1)
for (i5 = 0; i5 < Yt; i5++)
putpixel(x+i1+i4, y+i2*8*Yt+i3*Yt+i5, Color);
x = x+24*Xt+Wid;
Str += 2;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -