⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mychn.h

📁 这是毕业设计的程序主要是图书管理功能,希望大家给给意见
💻 H
字号:

/* ==================================================== */
/*                                                      */
/* 学生宿舍管理系统Ver 1.00.1 源代码                    */
/* 文件名: MyChn.h                                      */
/* 作用: 负责将字符输出到屏幕,包括中文和标准的ASCII字符 */
/*       主要思路是从点阵文件中读取字符电阵结构,再用描  */
/*       点法在屏幕上描绘出来.                          */
/* 版权所有 (c) 2007  张元龙 保留所有权利               */
/*                                                      */
/* ==================================================== */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <graphics.h>

#ifndef ChnDefined
#define ChnDefined


#define bool char
#define true 1
#define false 0

#define ScrColor DARKGRAY
#define MAXX    639
#define MAXY    479

typedef unsigned char byte;


const byte bit[8]={128,64,32,16,8,4,2,1};

bool AlreadyDestroy=true;
bool AlreadyShow=false;

FILE *FChn;                        /*汉字字库文件指针*/
FILE *FASC;                        /*ASCII字库文件指针*/


void WriteASC(char ch,int x,int y,int color){       /*写一个ASCII字符到屏幕上*/
    char bitdata[16];
    int i,j;
    fseek(FASC,ch*16,SEEK_SET);
    fread(bitdata,16,1,FASC);                       /*把该ASCII字模读入到bitdata中*/
    for(i=0;i<16;i++)
        for(j=0;j<8;j++){                           /*和bit[]与操作以后,在屏幕上画点*/        
            if(bitdata[i]&bit[j]) putpixel(x+j,i+y,color);
        }
}

void WriteHZ(unsigned char left,unsigned char right,int x,int y,int color){     /*写一个汉字到屏幕上*/
    char bitdata[32];
    int i,j;
    long fpos;
    if (left<161 || right <161) return;
    fpos=32L*((left-161)*94+(right-161));           /*获得字模在字库中的位置*/

    fseek(FChn,fpos,SEEK_SET);
    fread(bitdata,32,1,FChn);                       /*把该汉字字模读入到bitdata中*/

    for(i=0;i<16;i++)
        for(j=0;j<8;j++){                           /*和bit[]与操作以后,在屏幕上画点*/
            if(bitdata[2*i]&bit[j]) putpixel(x+j,y+i,color);
            if(bitdata[2*i+1]&bit[j]) putpixel(x+8+j,y+i,color);
        }
}

/* ============================================ */
/*  函数名:WriteText                           */
/*  函数作用: 将文本输出到屏幕(可中英文混合) */
/*  参数:                                      */
/*        Text:  : 指向文本缓冲区               */
/*        x,y    : 坐标                         */
/*        Color  : 字符颜色                     */
/* ============================================ */


void WriteText(char *Text,int x,int y,int Color){                /*中英文混合输出函数*/
    int Len=strlen(Text);
    int i;
    setcolor(Color);
    for (i=0; i<Len; ){
        if (Text[i]<0) {                                        /*该字符为汉字字符*/
            WriteHZ((unsigned char)Text[i],(unsigned char)Text[i+1],x,y,Color);
            x+=16;
            i+=2;
        } else {
            WriteASC(Text[i],x,y,Color);
            x+=8;
            i++;
        }
    }
}


void DrawInit(){                            /*该函数执行初始化工作*/
    static AlreadyInit=false;               /*确保初始化工作只执行一次*/
    int gdrive=DETECT,gmode;;    
    if (AlreadyInit) return;
    AlreadyInit=true;

    registerbgidriver(EGAVGA_driver);
    initgraph(&gdrive,&gmode,"");
    if((FChn=fopen("Dat\\hzk16","rb"))==NULL){   /*打开16*16点阵汉字字库*/
        printf("cannot open file\n");
        getch();
        exit(0);
    }

    if((FASC=fopen("Dat\\asc16","rb"))==NULL){   /*打开8*16点阵ASCII字库*/
        printf("cannot open file\n");
        getch();
        exit(0);
    }

    if (graphresult()!=grOk) {
        printf("Error!!!\n");
        getch();
        exit(0);
    }

    setviewport(0,0,MAXX,MAXY,0);

}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -