| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2879 人关注过本帖
标题:转贴〈直接写屏技术〉
取消只看楼主 加入收藏
mikewolf
Rank: 1
等 级:新手上路
帖 子:175
专家分:0
注 册:2004-7-3
收藏
 问题点数:0 回复次数:1 
转贴〈直接写屏技术〉

#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,&regs,&regs); /*调用中断0x10*****/ } /*将屏幕设置成文本模式*/ void CloseScreen() { union REGS regs; regs.h.ah=0; regs.h.al=TEXT_MODE;/*定义为文本模式*/ int86(0x10,&regs,&regs); } /*直接在屏幕(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; }

搜索更多相关主题的帖子: REGS MODE include 技术 union 
2004-10-12 22:56
mikewolf
Rank: 1
等 级:新手上路
帖 子:175
专家分:0
注 册:2004-7-3
收藏
得分:0 
主函数我进行了修改,大家运行一下,看看是什么结果!
2004-10-12 23:07
快速回复:转贴〈直接写屏技术〉
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018117 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved