📄 graph.c
字号:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#define BLACK makecol(0,0,0) /*黑色*/
#define WHITE makecol(255,255,255) /*白色*/
#define RED makecol(255,0,0) /*红色*/
#define GREEN makecol(0,255,0) /*绿色*/
#define BLUE makecol(0,0,255) /*蓝色*/
#define LIGHTGRAY makecol(192,192,192) /*浅灰色*/
#define DARKGRAY makecol(124,124,124) /*深灰色*/
#define YELLOW makecol(255,255,0) /*黄色*/
#define DARKGREEN makecol(0,128,0) /*深绿色*/
#define LIGHTBLUE makecol(0,168,252) /*浅蓝色*/
#define CYAN makecol(0,255,255) /*青色*/
#define PINK makecol(255,128,192) /*粉红色*/
#define ORANGE makecol(255,128,0) /*橙色*/
#define MAGENTA makecol(255,0,255) /*紫色*/
#define BROWN makecol(128,0,64) /*褐色*/
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
BITMAP *buffer; /*定义显存双缓冲图位*/
char HZK12[196272];
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void VGA_RESET() /*图形模式初始化*/
{
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0); /*设置屏幕显示模式 */
buffer = create_bitmap(SCREEN_W, SCREEN_H); /*建立双缓冲图位*/
}
/*加载中文字库*/
void LoadCharLib()
{
FILE *fp;
fp=fopen("font/HZK12","rb");
fread(HZK12,196272,1,fp);
fclose(fp);
}
void vpost() /*输出到屏幕*/
{
blit(buffer, screen, 0,0, 0,0,SCREEN_W, SCREEN_H); /*输出到屏幕*/
}
void DISPLAY_HZ(
int cx, /*横坐标*/
int cy, /*纵坐标*/
int Width, /*宽的放大倍数*/
int Height, /*长的放大倍数*/
int w, /*字间隔*/
int color, /*汉字颜色*/
char *s /*汉字*/
)
{
char Cb[24]; /*buffer用来存储一个汉字*/
int m,n,i,j,k;
unsigned char qh,wh;
long position; /*长整型 以支持长文件*/
char EC[2];
while(*s) /*循环条件:指针为真*/
{
if(*s<0) /*是汉字的话*/
{
qh=*(s)-0xa0; /*汉字区位码*/
wh=*(s+1)-0xa0;
position=(94*(qh-1)+(wh-1))*24; /*计算该汉字在字库中偏移量*/
memcpy(Cb,HZK12+position,24);
/*将24位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字*/
for(i=0;i<12;i++) /*字模的12个行*/
for(n=0;n<Height;n++) /**/
for(j=0;j<2;j++) /*每个行的个2字节*/
for(k=0;k<8;k++) /*每个字节8位*/
for(m=0;m<Width;m++) /**/
if (((Cb[i*2+j]>>(7-k))&0x1)!=0)
putpixel(buffer, cx+8*j*Width+k*Width+m, cy+i*Height+n, color);
s+=2; /*因为一个汉字内码占用两个字节,所以s必须加2 */
cx+=w; /*字间隔*/
}
else
{
EC[0]=*s;
EC[1]='\0';
textout_ex(buffer, font, EC, cx,cy+3, color,-1);
cx+=w-6;
s++;
}
}
}
void alphaimage(int x,int y,BITMAP *bmp,int alpha) /*显示透明的图片*/
{
set_trans_blender(0,0,0,alpha);
draw_trans_sprite(buffer,bmp,x,y);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -