#include<dos.h> #include<conio.h> #include<stdio.h> #define TEXT_MODE 0x03 #define PIC_MODE 0x13 /*初始化屏幕为图形模式*/ void InitScreen() { union REGS regs; /*************************************** REGS的原型 union REGS { struct WORDREGS x; struct BYTEREGS h; } WORDREGS原型: Struct WORDREGS { Unsigned ax,bx,cx,dx; Unsigned si,di,cflag,flags; } BYTEREGS 原型 Struct BYTEREGS { Unsigned al,ah,bl,bh; Unsigned cl,ch,dl,ch; } *************************************/
regs.h.ah=0; /*功能号为0*/ regs.h.al=PIC_MODE; /******************************* 定义为320*240*256的图形模式. 其他图形模式: AL=00 40 * 25 黑白 AL=01 40 * 25 彩色 AL=04/0D 320 * 200 彩色(EGA) AL=05 320 * 200 黑白 AL=11 640 * 480 单色 AL=12 640 * 480 16色 AL=13 320 * 200 256色 *******************************/ int86(0x10,®s,®s); /*调用中断0x10*****/ } /*将屏幕设置成文本模式*/ void CloseScreen() { union REGS regs; regs.h.ah=0; regs.h.al=TEXT_MODE;/*定义为文本模式*/ int86(0x10,®s,®s); } /*直接在屏幕(x,y)点坐标上画一个颜色为color的点.*/ void PutPixel(int x,int y,int color) { /*0xa00000000L为显首地址*/ char far *addr=(char far*)0xa0000000L; /*屏幕上位置计算方法 首地址+纵坐标*320+横坐标*/ *(addr+y*320+x)=color; }
int main(void) { int i; InitScreen(); for(i=0;i<=50;i++) PutPixel(i,10,3); for(i=10;i<=50;i++) PutPixel(0,i,3); for(i=0;i<=50;i++) PutPixel(i,50,3); for(i=10;i<=50;i++) PutPixel(50,i,3); for(i=0;i<=60;i++) PutPixel(25,i,3); getch(); CloseScreen(); return 0; }