turbo c汉字的显示与放大

#include "stdio.h"
#include "stdlib.h"
#include "graphics.h"

#define S 16                 /*  S:汉字点阵数*/
#define HZK  "G:\\tc\\hzk16f"  /*汉字字库路径及文件名*/

void disphz(int x,int y,char *p,int color,int m)   /*m是放大倍数*/
{
	int  i, j, n, k;
	FILE *fp;
	char qh,wh;
	long offset;
	char buffer[S*S/8];
	char mask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

	if ((fp = fopen(HZK,"rb")) == NULL)
		exit(0);
	while(*p != '\0'){
		qh = *p - 0xa0;          /*计算区号*/
		p++;
		wh =*p - 0xa0;          /*计算位号*/
		p++;
		offset = (94L* (qh -1) + wh -1) * S * S / 8;   /*计算地址码*/
		fseek(fp,offset,0);
		fread(buffer, S * S / 8, 1, fp);
		for ( i = 0 ;i<S; i++){
			for( j = 0; j<S; j++){
				if (( buffer[S/8*i+j/8] & mask[j%8]) != 0)
					for( n = 0; n<m; n++)
						for( k = 0; k<m; k++)
							putpixel( x+j*m+n, y+i*m+k, color);
			}
		}
		x += S *m + 5;
	}
	fclose(fp);
}

int main()
{
 int device = VGA;
 int mode = VGAHI;
 char p[] = "汉字";
 initgraph(&device,&mode,"");
 disphz(250,200,p,YELLOW,2);
 getch();
 closegraph();
 return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值