资源描述:
《dos真彩色模式下真彩色图像显示技术论文》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、DOS真彩色模式下真彩色图像显示技术论文.freels公司的TGUI94XX、TGUI96XX,CirrusLogic的GD543X、GD544X,TsengLaboratories的ET4000,ARKLogic的ARK1000,、ARK2000,S3Incorporated的S386CXXX等等。它们除了继续支持标准VGA模式外,都支持16色、256色、32K高彩色、64K高彩色及16.7M真彩色VESABIOS扩展模式,版本大多为VESA1.2,卡上具有32K、64K及16.7MDAC,.freelall模式下编译通过。但执行程
2、序并不依赖所编译的硬件环境,曾经在装有1MVRAM的TGUI9440、TGUI9680、ARK2000PV、S386C868等VESA局部总线、PCI局部总线、甚至ISA总线的TVGA8900D(也支持VESA1.2标准,1M以下的OEM模式号同TGUI9440)显示卡的486~586各档PC机的DOS环境下均获通过。示例程序对SuperVGA卡VESABIOS高、真彩色扩展模式编程具有一般性。对本文未提到的其它高、真彩色显示卡,只要其支持VESA标准(Version1.1),不加修改或稍作修改便可使用;对更高分辨率,只要显示适配卡配
3、2MVRAM,便可作115H、116H、117H模式的编程,例程中只要修改highcolor()、truecolor()两函数中n、m的宽高界值和addr的上界。但更重要的是:程序运行以前用显示适配卡所配调整DRAM像素时钟或调整彩色显示器扫描频率的实用程序,将像素时钟和扫描频率调整到该卡现行分辨率所要求的值上,例如,CirrusGD5434卡(2MVRAM)要在117H模式下顺利仿真显示16.7M真彩色,须在DOS下先执行CLMODE.EXEt640=60t800=60t1024=60t1280=0,程序便可顺利显示高彩色图像。//
4、24位PCX高、真彩色图像显示例程#includestdio.h#includestdlib.h#includedos.h#includebios.h#includeconio.h#includeio.h#includemem.h#includeftl.h#includealloc.hunsignedlongdataoffset,Line-bytes;unsignedlongaddr;unsignedintCurpage,ode(unsignedintmode);voidVesaInfo(unsignedintmode);voidma
5、p(void);voidSelectpage(unsignedintpage);voidhighcolor(void);voidtruecolor(void);main()//主函数{PCXHEADheader;char*filename,c;printf("Pleaseenterthe640X48024bitRGBmodePCXfilename:");gets(filename);if((fp=fopen(filename,"rb"))==NULL){SetVesaMode(0x03);puts("Filereadingerror"
6、);exit(1);}fread((char*)header,1,sizeof(PCXHEAD),fp);ax-header.ymin+1;printf("Imageinformation:truecolorimageage");printf("Pressselect1or2:");if((c=getch())=='1'){highcolor();SetVesaMode(0x03);}elseif(c=='2'){truecolor();SetVesaMode(0x03);}else{printf("Thisisnothigh-col
7、ortrue-colorimage!");exit(1);}}fclose(fp);return0;}//设置VESABIOS扩展模式函数voidSetVesaMode(unsignedintmode){unionREGSr;unsignedintsetmode=1;r.x.ax=0x4f02;r.x.bx=mode;int86(0x10,r,if(r.x.ax!=0x4f)setmode=0;elseVesaInfo(mode);Curpage=0xffff;return(setmode);}//返回VESA编程信息函数voidVe
8、saInfo(unsignedintmode){unionREGSr;structSREGSsr;r.x.cx=mode;r.x.ax=0x4f01;sr.es=FP-SEG(modeinfo);r.x.di=FP-OF