資源描述:
《dos真彩色模式下真彩色圖像顯示技術(shù)論文》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、DOS真彩色模式下真彩色圖像顯示技術(shù)論文.freels公司的TGUI94XX、TGUI96XX,CirrusLogic的GD543X、GD544X,TsengLaboratories的ET4000,ARKLogic的ARK1000,、ARK2000,S3Incorporated的S386CXXX等等。它們除了繼續(xù)支持標(biāo)準(zhǔn)VGA模式外,都支持16色、256色、32K高彩色、64K高彩色及16.7M真彩色VESABIOS擴(kuò)展模式,版本大多為VESA1.2,卡上具有32K、64K及16.7MDAC,.freelall模式下編譯通過(guò)。但執(zhí)行程
2、序并不依賴所編譯的硬件環(huán)境,曾經(jīng)在裝有1MVRAM的TGUI9440、TGUI9680、ARK2000PV、S386C868等VESA局部總線、PCI局部總線、甚至ISA總線的TVGA8900D(也支持VESA1.2標(biāo)準(zhǔn),1M以下的OEM模式號(hào)同TGUI9440)顯示卡的486~586各檔PC機(jī)的DOS環(huán)境下均獲通過(guò)。示例程序?qū)uperVGA卡VESABIOS高、真彩色擴(kuò)展模式編程具有一般性。對(duì)本文未提到的其它高、真彩色顯示卡,只要其支持VESA標(biāo)準(zhǔn)(Version1.1),不加修改或稍作修改便可使用;對(duì)更高分辨率,只要顯示適配卡配
3、2MVRAM,便可作115H、116H、117H模式的編程,例程中只要修改highcolor()、truecolor()兩函數(shù)中n、m的寬高界值和addr的上界。但更重要的是:程序運(yùn)行以前用顯示適配卡所配調(diào)整DRAM像素時(shí)鐘或調(diào)整彩色顯示器掃描頻率的實(shí)用程序,將像素時(shí)鐘和掃描頻率調(diào)整到該卡現(xiàn)行分辨率所要求的值上,例如,CirrusGD5434卡(2MVRAM)要在117H模式下順利仿真顯示16.7M真彩色,須在DOS下先執(zhí)行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()//主函數(shù){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;}//設(shè)置VESABIOS擴(kuò)展模式函數(shù)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編程信息函數(shù)voidVe
8、saInfo(unsignedintmode){unionREGSr;structSREGSsr;r.x.cx=mode;r.x.ax=0x4f01;sr.es=FP-SEG(modeinfo);r.x.di=FP-OF